md5sum 输出和 Python hashlib 输出有什么区别?

What is the difference between md5sum output and Python hashlib output?

为什么 hashlib.md5().hexdigest() 的输出与 md5sumopenssl 的输出不同?

$ echo "test string" | md5sum
f299060e0383392ebeac64b714eca7e3  -
$ echo "test string" | openssl dgst -md5
(stdin)= f299060e0383392ebeac64b714eca7e3
$ python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from hashlib import md5
>>> print(md5("test string").hexdigest())
6f8db599de986fab7a21625b7916589c

我在尝试生成用于 Gravatar 的 md5 摘要时注意到了这一点。 Python hashlib 输出有效,但 md5sumopenssl 输出无效。

echo 默认添加隐式换行符。

$ echo -n "test string" | openssl dgst -md5
(stdin)= 6f8db599de986fab7a21625b7916589c