首页 > 解决方案 > 为什么用python和linux命令行程序计算SHA和不一样?

问题描述

我使用 python 来计算字符串的 sha 总和,但两个不同程序的输出不同。

这是我所做的:

~/$ echo "Tuwile@com.termux" | sha256sum
cc85269412339c15a992fb8766f5d1d6e0c2f0fbab990d4fc569d747503d98a2  -
~/$ python                                                                                          
Python 3.9.1 (default, Jan  8 2021, 21:18:33)
[Clang 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489 on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> r=hashlib.sha256("Tuwile@com.termux".encode())
>>> print(r.hexdigest())
40445c42210abea6b0e681b29d15b163692826128c369834ab3b9e63ac8f6527
>>>

标签: pythonshellsha

解决方案


默认情况下,echo将行尾添加\n到输出中,它成为sha256sum输入的一部分。添加-n标志以抑制它:

>>> echo -n "Tuwile@com.termux" | sha256sum
40445c42210abea6b0e681b29d15b163692826128c369834ab3b9e63ac8f6527 -

推荐阅读