gpt4 book ai didi

java - 如何从生成的PBKDF2密码的字节数组中获取字符串

转载 作者:行者123 更新时间:2023-12-02 02:13:46 24 4
gpt4 key购买 nike

我使用 here 中的解决方案:

public static byte[] getEncryptedPassword(String password, byte[] salt,  int iterations,  int derivedKeyLength) throws NoSuchAlgorithmException, InvalidKeySpecException {
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterations, derivedKeyLength * 8);
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
return f.generateSecret(spec).getEncoded();
}

问题是当我这样做时:

System.out.println(new String(getEncryptedPassword(p,s,i,l)));

我得到一个非常奇怪的字符串,类似于 ���:,但我想要一个可以保存在数据库中的普通字符串。我的错误是什么?

最佳答案

如果您想将 byte[] 之类的二进制数据转换为字符串,您通常将其编码为 Hex 或 Base64 格式。 Base64 比十六进制小,因此我建议您使用这个。

对于 Base64,您可以从 Java 8 开始使用 java.util.Base64:

String base64encoded = Base64.getEncoder().encodeToString(getEncryptedPassword(p,s,i,l)));

对于 Hex AFAIR Java 不包含必要的代码。您可以使用例如Hex encode来自Apache common codec :

String hexEncoded = Hex.encodeHexString(getEncryptedPassword(p,s,i,l)));

关于java - 如何从生成的PBKDF2密码的字节数组中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49589526/

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