gpt4 book ai didi

java - 密码加密方法对于相同的参数永远不会返回相同的结果

转载 作者:行者123 更新时间:2023-12-01 18:44:25 25 4
gpt4 key购买 nike

我有found代码利用java.security.*来加密密码。但当我使用它时,它不起作用。每次我使用相同的参数调用加密方法(这些参数显示在 encrypt() 方法中,并且每次都是相同的),我会得到不同的结果,这当然会使代码无用。这是我的代码:

public byte[] encrypt(String clearPassword, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException {
System.out.println(clearPassword+" ********** "+salt);
String algorithm = "PBKDF2WithHmacSHA1";
int derivedKeyLength = 1600;
int iterations = 20000;

KeySpec spec = new PBEKeySpec(clearPassword.toCharArray(), salt, iterations, derivedKeyLength);
SecretKeyFactory f = SecretKeyFactory.getInstance(algorithm);
byte [] truc = f.generateSecret(spec).getEncoded();
System.out.println(truc);
return truc;
}

public byte[] generateSalt() throws NoSuchAlgorithmException {
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] salt = new byte[8];
random.nextBytes(salt);

return salt;
}

我认为我在原始代码中的某个时刻引入了错误,但我看不出错误在哪里。有什么想法吗?

最佳答案

这是因为 System.out.println(truc); 没有按照您的想法进行操作。如果您尝试过:

System.out.println(Arrays.toString(truc));

您将打印数组的实际内容,每次使用相同的参数调用该方法时,该内容应该是相同的。

例如:printing arrays

关于java - 密码加密方法对于相同的参数永远不会返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com