调用cryptography密码学API接口计算SHA256/SHA1哈希摘要

正文标题:如何调用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

猜你喜欢

转载自blog.csdn.net/weixin_33675507/article/details/87132725