我需要为我的密码计算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/
但是我需要根据我的代码进行计算.
您的帮助是令人赞赏和可爱的.
解决方法:
从Javadoc中获取digest():
Completes the hash computation by performing final operations such as padding. The digest is reset after this call is made.
调用一次digest(),然后将结果放入变量中.
(顺便说一句,如果您搜索摘要,那么只要获得固定结果,这总是一个好主意,您会发现这是空字符串的SHA-256摘要.)