为什么Python生成的MD5哈希与使用echo和md5sum在终端中生成的不同?
Python中的MD5哈希和在命令行中用md5sum命令生成的哈希是不同的。为什么会这样呢?
>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("mystringforhash")
>>> print h.hexdigest()
86b6423cb6d211734fc7d81bbc5e11d3 # Result from Python
$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3 - # Result on the shell
1 个回答
207
echo
命令会在输出的内容后面加上一个换行符(\n
),因为在命令行中,通常不希望行末没有换行,这样看起来会很乱,提示符也不会从最左边开始。
如果你想去掉这个换行符,可以使用 -n
参数,这样输出的内容就不会有换行符了,这样输出的结果和你的 Python 脚本的校验和是一样的:
> echo -n mystringforhash | md5sum
86b6423cb6d211734fc7d81bbc5e11d3 -