内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我将用户密码作为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
发生这种情况是因为cript.digest()返回一个字节数组,您试图将其作为字符串打印出来。您想将其转换为可打印的十六进制字符串。
简单的解决方案:使用Apache的公共编解码器库:
String password = new String(Hex.encodeHex(cript.digest()),
CharSet.forName("UTF-8"));