我需要为我的密码计算 SHA 256。
我已经知道我可以使用 apache 的通用编解码器,但这在我工作的地方是不允许的
我尝试制作一个简单的函数来从纯文本返回 sha 256,即:
public static String getSHA1(String plainText) {
MessageDigest md;
try {
md = MessageDigest.getInstance("SHA-256");
md.update(plainText.getBytes());
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < md.digest().length; i++) {
hexString.append(Integer.toHexString(0xFF & md.digest()[i]));
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
我的问题是无论输入是什么,结果都是一样的。我总是得到这个结果
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
我可以使用这个网站在线计算 sha 256 http://onlinemd5.com/
但我需要从我的代码中计算它。
感谢您的帮助。
最佳答案
来自 digest()
的 Javadoc:
Completes the hash computation by performing final operations such as padding. The digest is reset after this call is made.
调用一次digest()
并将结果放入一个变量。
(顺便说一下,如果您搜索了摘要,只要您得到固定结果,这总是一个好主意,您就会看到它是空字符串的 SHA-256 摘要。)
关于java - 计算 SHA 256 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628346/