我正在尝试用 Java 制作一个简单的 String 到 SHA1 转换器,这就是我所拥有的……
public static String toSHA1(byte[] convertme) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
}
catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
return new String(md.digest(convertme));
}
当我通过它时 toSHA1("password".getBytes())
,我得到 [�a�ɹ??�%l�3~��.
我知道这可能是一个简单的编码修复,比如 UTF-8,但是有人可以告诉我我应该怎么做才能得到我想要的东西 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
?还是我这样做完全错了?
原文由 Brian 发布,翻译遵循 CC BY-SA 4.0 许可协议
更新
您可以使用 Apache Commons Codec (版本 1.7+)为您完成这项工作。
感谢 @Jon Onstott 提出的这个建议。
旧答案
将您的字节数组转换为十六进制字符串。 Real 的 How To 告诉您怎么做。
和(从 Real’s How To 复制)
顺便说一句,您可能会使用 Base64 获得更紧凑的表示。 Apache Commons Codec API 1.4 具有这个不错的实用程序,可以消除所有痛苦。 参考这里