In [3]:
import hashlib

# 计算字符串 md5 值
message = "wxnacy"
md5 = hashlib.md5()
md5.update(message.encode('utf-8'))
md5.hexdigest()
Out[3]:
'1f806eb48b670c40af49a3f764ba086f'
In [4]:
# 计算字符串 md5 值
hashlib.md5(message.encode('utf-8')).hexdigest()
Out[4]:
'1f806eb48b670c40af49a3f764ba086f'
In [6]:
# 计算文件 md5 值
def encrypt_file(filename):
    hash_md5 = hashlib.md5()
    with open(filename, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

encrypt_file('./hashlib.ipynb')
Out[6]:
'f0629f11bf649b31f040ec4248818cba'
In [9]:
# 计算网址内容的 md5 值
from urllib.request import urlopen

def encrypt_url(url, max_file_size=100 * 1024 * 1024):
    remote = urlopen(url)
    h = hashlib.md5()

    total_read = 0
    while True:
        data = remote.read(4096)
        total_read += 4096

        if not data or total_read > max_file_size:
            break
        h.update(data)
    return h.hexdigest()

encrypt_url("https://wxnacy.com")
Out[9]:
'7943484aaae8ec07556c23a41be3cdbe'
In [2]:
# 查看其它 hash 值算法
dir(hashlib)
Out[2]:
['__all__',
 '__builtin_constructor_cache',
 '__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__get_builtin_constructor',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 '_hashlib',
 'algorithms_available',
 'algorithms_guaranteed',
 'blake2b',
 'blake2s',
 'md5',
 'new',
 'pbkdf2_hmac',
 'scrypt',
 'sha1',
 'sha224',
 'sha256',
 'sha384',
 'sha3_224',
 'sha3_256',
 'sha3_384',
 'sha3_512',
 'sha512',
 'shake_128',
 'shake_256']
In [ ]: