我将用户密码作为 sha1 哈希存储在数据库中。
不幸的是我得到了奇怪的答案。
我将字符串存储为:
MessageDigest cript = MessageDigest.getInstance("SHA-1");
cript.reset();
cript.update(userPass.getBytes("utf8"));
this.password = new String(cript.digest());
我想要这样的东西 –>
aff –> “0c05aa56405c447e6678b7f3127febde5c3a9238”
而不是
aff –> �V@\D~fx����:�8
原文由 Marcos Roriz Junior 发布,翻译遵循 CC BY-SA 4.0 许可协议
发生这种情况是因为 cript.digest() 返回一个字节数组,您正试图将其作为字符串打印出来。您想要将其转换为可打印的十六进制字符串。
简单的解决方案:使用 Apache 的 commons-codec 库: