【发布时间】:2015-04-24 02:28:13
【问题描述】:
在一些测试中,我在 Groovy 中使用 MessageDigest 库,有时此函数返回不正确的值。下面是我的代码:
import java.security.MessageDigest;
String.metaClass.toSHA256 = {
def messageDigest = MessageDigest.getInstance("SHA-256")
messageDigest.update(delegate.getBytes("UTF-8"))
new BigInteger(1, messageDigest.digest()).toString(16).padLeft(40, '0')
}
例如 - 我尝试将此字符串编码为 SHA-256:
582015-04-23 20:47:112015-04-23 23:59:000020502015-04-23 20:47:11tests-from-api["afoot"]33facafaece3afd353bcbe88637d11b7
我的方法返回cb2814380117cd5621064c1d7512b32e3cb8c8cb2b1f20016f6da763598d738
但是在线生成器,返回0cb2814380117cd5621064c1d7512b32e3cb8c8cb2b1f20016f6da763598d738
它在 40 次尝试中计算错误 2 次
你能帮我解决一下吗?
【问题讨论】:
-
当 SHA-256 哈希为 64 个字符时,您正在使用
padLeft(40, '0')... -
不就是一样,多了一个0吗?
标签: java groovy sha256 message-digest