openssl和hashlib/pycryp之间的SHA1散列不同

2024-10-01 15:40:13 发布

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

为什么使用openssl得到的哈希值与我在python中得到的哈希值不同?在

$ echo "Lorem ipsum" | openssl dgst -sha1 -hex
(stdin)= d0c05753484098c61e86f402a2875e68992b5ca3
$ python
>>> from hashlib import sha1
>>> sha("Lorem ipsum").hexdigest()
'94912be8b3fb47d4161ea50e5948c6296af6ca05'
>>> from Crypto.Hash import SHA
>>> SHA.new("Lorem ipsum").hexdigest()
'94912be8b3fb47d4161ea50e5948c6296af6ca05'

这些弦不是等价的吗?我错过了什么明显的东西吗?在

编辑:感谢您的发现。正在从一个文件中传送已保存的消息,该文件也遇到了同样令人讨厌的换行符问题。在

^{pr2}$

Tags: 文件fromimportechostdinsha1hashlibsha
3条回答

您缺少默认情况下echo将附加的结束线:

echo "Lorem ipsum" | openssl dgst -sha1 -hex
(stdin)= d0c05753484098c61e86f402a2875e68992b5ca3

使用-n参数,它将只回显给它的字符串,以获得预期结果:

^{pr2}$

echo向字符串添加换行符。选项-tailing取消新行:

> echo -n "Lorem ipsum" | openssl dgst -sha1 -hex
94912be8b3fb47d4161ea50e5948c6296af6ca05

echo在字符串的末尾加了一个换行符

>>> sha("Lorem ipsum\n").hexdigest()
'd0c05753484098c61e86f402a2875e68992b5ca3'

相关问题 更多 >

    热门问题