java - python和java的sha1加密结果不同

标签 java python encryption sha1

一个应用程序,我需要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/

相关文章:

java - 如何实现一个在原型(prototype)上调用 destroy 方法的 bean 后处理器?

java - 我只能使用 "for"循环

java.sql.SQLException : No suitable driver found for jdbc:mysql//127. 0.0.1 :3306/java Error - JDK 1. 8,mysql连接器8.0.12

java - 如何循环回到字符串的开头? super 技能,加密-解密

java - 使用 RSA 从 C# 到 Java 的 Base64 编码字符串到公钥

java - forName 和 Class.forName 和 isInstance 的使用

python - 在 Twisted 中使用 DeferredQueue 进行任务间通信

python - 在python中对数字进行排序

BeautifulSoup 的 Python 高内存使用率

地穴类型识别/etc/shadow