基于时间戳和电话号码的java Salt随机数
我正在使用下面的代码生成一个随机的8位数字代码,但我想通过使用一些用户数据来保护它,因为一个简单的脚本最终可以解决这个问题。有没有关于如何根据unix时间戳和/或电话号码(减去破折号)来确定该值的想法
public static void main(String[] args) {
System.out.println(generateRandomPassword());
}
public static String generateRandomPassword() {
Random random = new SecureRandom();
int CODE_LENGTH = 8;
final String letters = "0123456789";
String pw = "";
for (int i = 0; i < CODE_LENGTH; i++) {
int index = (int) (random.nextDouble() * letters.length());
pw += letters.substring(index, index + 1);
}
return pw;
}
# 1 楼答案
存储散列版本的密码时使用Salt。像这样:
无盐:密码->;哈希函数=>;哈希密码(可以检索用户密码)
含盐:盐+密码->;哈希函数=>;散列密码(除非您也知道密码,否则无法检索密码)
如果我正确理解了您的问题,您希望将电话号码或时间戳作为种子添加到随机数生成器中,以确保近乎真实的随机性。SecureRandom构造函数返回一个未设定种子的生成器。调用setSeed()方法以提供种子。比如: