【发布时间】:2012-10-31 03:42:26
【问题描述】:
当我通过以下代码重现 SHA2 哈希时:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.digest("A".getBytes("UTF-8"));
它给了我一个字节数组,即:85,-102,-22,-48,-126,100,-43,121,93,57,9,113,-116,-35,5,-85,-44, -107,114,-24,79,-27,85,-112,-18,-13,26,-120,-96,-113,-33,-3
但是当我通过 MySQL 复制相同的哈希时,它给了我一个字符串:5cfe2cddbb9940fb4d8505e25ea77e763a0077693dbb01b1a6aa94f2
如何转换 Java 的结果,以便与 MySQL 的结果进行比较?
【问题讨论】:
-
使用字符串格式化程序将字节数组转换为十六进制字符串
-
你是什么意思:
it gives me a byte array, which is:85-102-22-48-126100-...byte[]的值怎么可能大于 127? -
输出格式可能会引起误解。以下是用逗号分隔的值:85,-102,-22,-48,-126,100,-43,121,93,57,9,113,-116,-35,5,-85,-44,-107,114,- 24,79,-27,85,-112,-18,-13,26,-120,-96,-113,-33,-3
-
转换为十六进制字符串也不会给出相同的值。
-
啊,好的。所以
85(十进制)是55十六进制,你的MySQL哈希以5c开头,你确定两者都使用相同的算法吗?