python和java的sha1加密结果不同



一个应用程序,我需要sha1加密,但是python和java的结果不同,java是正确的。因为python中没有字节对象,而java字节是用于哈希计算的。如何得到正确的结果与python?

与往常一样,区别在于摘要实现中的而不是(它们在所有主要库中都有良好的文档和正确的实现)。区别在于如何表示结果数据。

md.digest()返回包含摘要生成的二进制数据的byte[]

new String(md.digest())试图将这些字节解释为平台默认编码中的文本,这是几乎可以肯定不是你想要的。

可能希望以十六进制或Base64编码表示摘要。

试试这个(确保导入javax.xml.bind.DatatypeConverter):

String result = DatatypeConverter.printHexBinary(md.digest());

或者,如果您需要Base64,请使用printBase65Binary()

最新更新