正文标题:如何调用Python 3自带的SHA256/SHA1摘要函数
方法一:使用hashlib
官方文档:
https://docs.python.org/3/library/hashlib.html?highlight=cryptograph
>>> import hashlib
>>> h = hashlib.new('ripemd160')
>>> h.update(b"Nobody inspects the spammish repetition")
>>> result = h.hexdigest()
>>> print(result)
cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc
方法二:使用cryptograhpy库提供的后端密码引擎
官方文档:
https://cryptography.io/en/latest/hazmat/primitives/cryptographic-hashes/
python3 -m pip install cryptography==2.2.2
下列测试代码仅支持Python版本3.5以上
from __future__ import print_function
import cryptography.hazmat.backends.openssl.backend
from cryptography.hazmat.primitives import hashes
def run_sha256_test(testinput):
backend = cryptography.hazmat.backends.openssl.backend
sha256sum = hashes.Hash(hashes.SHA256(), backend=backend)
sha256sum.update(testinput)
testoutput = sha256sum.finalize()
print('SHA256 Digest:')
print(testoutput.hex())
def run_sha1_test(testinput):
backend = cryptography.hazmat.backends.openssl.backend
sha256sum = hashes.Hash(hashes.SHA256(), backend=backend)
sha1sum = hashes.Hash(hashes.SHA1(), backend=backend)
sha1sum.update(testinput)
testoutput = sha1sum.finalize()
print('SHA1 Digest:')
print(testoutput.hex())
def main():
data = b"abc"
print('Test input data:')
print(data.decode('ascii'))
run_sha256_test(data)
run_sha1_test(data)
if '__main__' == __name__:
main()
输出结果:
Test input data:
abc
SHA256 Digest:
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA1 Digest:
a9993e364706816aba3e25717850c26c9cd0d89d