如何在不添加尾随 '\n' 的情况下散列字符串?
How to hash a string without adding a trailing '\n' to it?
我正在尝试在 python 和 shell 中使用 md5(OSX 上的 zsh)。
我明白了:
在python中:
>>> hashlib.md5("zoo".encode('utf-8')).hexdigest()
'd2cbe65f53da8607e64173c1a83394fe'
使用 Zsh :
$ echo "zoo" | md5
ace34ff0a763d9f382cbe6b219fcac7c
因为我还有:
>>> hashlib.md5("zoo\n".encode('utf-8')).hexdigest()
'ace34ff0a763d9f382cbe6b219fcac7c'
在 Python 中,我认为我的 zsh 命令在散列之前向字符串添加了一个(不需要的)尾随 '\n'。
为什么会发生这种情况,我该如何避免这种情况?
我刚知道:
md5
命令有一个 -s
标志,允许将参数直接作为字符串传递。
所以 :
$ md5 -s "zoo"
MD5 ("zoo") = d2cbe65f53da8607e64173c1a83394fe
真蠢,我的坏蛋。
给你:
kent$ echo -n 'zoo'|md5sum
d2cbe65f53da8607e64173c1a83394fe
kent$ echo 'zoo'|md5sum
ace34ff0a763d9f382cbe6b219fcac7c
我正在尝试在 python 和 shell 中使用 md5(OSX 上的 zsh)。
我明白了:
在python中:
>>> hashlib.md5("zoo".encode('utf-8')).hexdigest()
'd2cbe65f53da8607e64173c1a83394fe'
使用 Zsh :
$ echo "zoo" | md5
ace34ff0a763d9f382cbe6b219fcac7c
因为我还有:
>>> hashlib.md5("zoo\n".encode('utf-8')).hexdigest()
'ace34ff0a763d9f382cbe6b219fcac7c'
在 Python 中,我认为我的 zsh 命令在散列之前向字符串添加了一个(不需要的)尾随 '\n'。
为什么会发生这种情况,我该如何避免这种情况?
我刚知道:
md5
命令有一个 -s
标志,允许将参数直接作为字符串传递。
所以 :
$ md5 -s "zoo"
MD5 ("zoo") = d2cbe65f53da8607e64173c1a83394fe
真蠢,我的坏蛋。
给你:
kent$ echo -n 'zoo'|md5sum
d2cbe65f53da8607e64173c1a83394fe
kent$ echo 'zoo'|md5sum
ace34ff0a763d9f382cbe6b219fcac7c