一个应用程序,我需要sha1加密,但是python和java的结果不同,java是正确的。 因为python中没有byte对象,java的byte是用来计算hash的。 如何用python得到正确的结果?
最佳答案
像往常一样,差异不在摘要实现中(那些在所有主要库中都有详细记录并正确实现)。不同之处在于您表示结果数据的方式。
md.digest()
返回一个 byte[]
,其中包含摘要生成的二进制数据。
new String(md.digest())
尝试将这些字节解释为平台默认编码中的文本,几乎可以肯定这不是您想要的。
您可能希望摘要以十六进制或 Base64 编码表示。
试试这个(确保导入 javax.xml.bind.DatatypeConverter
):
String result = DatatypeConverter.printHexBinary(md.digest());
或者,如果您需要 Base64,请改用 printBase65Binary()
。
关于java - python和java的sha1加密结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901210/