JAVA和PYTHON中的SHA256加密会产生不同的结果

2024-10-03 17:15:48 发布

您现在位置:Python中文网/ 问答频道 /正文

如果您能帮助我理解为什么我的JAVA和PYTHON中的SHA256加密函数不能产生结果(1位数的差异,PYTHON中的差异是一位数):

要加密的哈希为:“thisisatest”
Java结果是:a7c96262c21db9a06fd49e307d694fd95f624569f9b35bb3ffacd88044f9787
Python的结果是: a7c96262c21db9a06fd49e307d694fd95f624569f9b35bb3ffacd880440f9787

Python代码:

import hashlib

def encrypt_string(hash_string):
    sha_signature = \
        hashlib.sha256(hash_string.encode()).hexdigest()
    return sha_signature


hash_string = "thisisatest"
print(encrypt_string(hash_string), end="")

Java代码:

^{pr2}$

Tags: 函数代码stringhash差异javahashlibencrypt
1条回答
网友
1楼 · 发布于 2024-10-03 17:15:48

问题是如果(无符号)字节值小于等于15,^{}会删除前导零。作为快速解决方法,您可以使用以下方法:

sb.append(String.format("%02x", 0xff & digested[i]));

虽然更有效的实现当然是可能的。

要在Python中生成相同的bug,请使用以下命令:

^{pr2}$

相关问题 更多 >