我需要为我的密码计算SHA 256。
我试图创建一个简单的函数来从纯文本中返回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
我可以使用这个网站http://onlinemd5.com/
在线计算sha 256但我需要从我的代码中计算出来。
你的帮助很受欢迎。
答案 0 :(得分:3)
来自digest()
的Javadoc:
通过执行填充等最终操作来完成哈希计算。 完成此次通话后,摘要会重置。
调用digest()
一次,然后将结果放入变量中。
(顺便说一下,如果你搜索了摘要,每当你得到一个固定的结果时总是一个好主意,你会看到它是空字符串的SHA-256摘要。)