如何在 Python3 和 Mac / Linux 终端中获得相同的哈希值?
How to get the same hash in Python3 and Mac / Linux terminal?
如何在终端 (Mac/Linux) 和 Python 中获得相同的 sha256 哈希值?
尝试了以下示例的不同版本,并在 Whosebug 上搜索。
航站楼:
echo 'test text' | shasum -a 256
c2a4f4903509957d138e216a6d2c0d7867235c61088c02ca5cf38f2332407b00
Python3:
import hashlib
hashlib.sha256(str("test text").encode('utf-8')).hexdigest()
'0f46738ebed370c5c52ee0ad96dec8f459fb901c2ca4e285211eddf903bf1598'
更新:
与 Why is an MD5 hash created by Python different from one created using echo and md5sum in the shell? 不同,因为在 Python3 中你需要显式编码,而我需要 Python 中的解决方案,而不仅仅是在终端中。 "duplicate" 不适用于文件:
example.txt内容:
test text
航站楼:
shasum -a 256 example.txt
c2a4f4903509957d138e216a6d2c0d7867235c61088c02ca5cf38f2332407b00
echo
内置函数将添加尾随换行符,产生不同的字符串,从而产生不同的散列。这样做
echo -n 'test text' | shasum -a 256
如果您确实打算也散列换行符(我建议不要这样做,因为它违反了 POLA),它需要在 python 中像这样修复
hashlib.sha256("{}\n".format("test text").encode('utf-8')).hexdigest()
如何在终端 (Mac/Linux) 和 Python 中获得相同的 sha256 哈希值?
尝试了以下示例的不同版本,并在 Whosebug 上搜索。
航站楼:
echo 'test text' | shasum -a 256
c2a4f4903509957d138e216a6d2c0d7867235c61088c02ca5cf38f2332407b00
Python3:
import hashlib
hashlib.sha256(str("test text").encode('utf-8')).hexdigest()
'0f46738ebed370c5c52ee0ad96dec8f459fb901c2ca4e285211eddf903bf1598'
更新: 与 Why is an MD5 hash created by Python different from one created using echo and md5sum in the shell? 不同,因为在 Python3 中你需要显式编码,而我需要 Python 中的解决方案,而不仅仅是在终端中。 "duplicate" 不适用于文件:
example.txt内容:
test text
航站楼:
shasum -a 256 example.txt
c2a4f4903509957d138e216a6d2c0d7867235c61088c02ca5cf38f2332407b00
echo
内置函数将添加尾随换行符,产生不同的字符串,从而产生不同的散列。这样做
echo -n 'test text' | shasum -a 256
如果您确实打算也散列换行符(我建议不要这样做,因为它违反了 POLA),它需要在 python 中像这样修复
hashlib.sha256("{}\n".format("test text").encode('utf-8')).hexdigest()