# hlib.py # NOT A PYTHON MODULE - DO NOT ATTEMPT TO RUN # hlib.py >>> import hashlib >>> hashlib.algorithms_available {'mdc2', 'sha224', 'whirlpool', 'sha1', 'sha3_512', 'sha512_256', 'sha256', 'md4', 'sha384', 'blake2s', 'sha3_224', 'sha3_384', 'shake_256', 'blake2b', 'ripemd160', 'sha512', 'md5-sha1', 'shake_128', 'sha3_256', 'sha512_224', 'md5', 'sm3'} >>> hashlib.algorithms_guaranteed {'blake2s', 'md5', 'sha224', 'sha3_512', 'shake_256', 'sha3_256', 'shake_128', 'sha256', 'sha1', 'sha512', 'blake2b', 'sha3_384', 'sha384', 'sha3_224'} >>> h = hashlib.blake2b() >>> h.update(b'Hash me') >>> h.update(b' now!') >>> h.hexdigest() '56441b566db9aafcf8cdad3a4729fa4b2bfaab0ada36155ece29f52ff70e1e9d' '7f54cacfe44bc97c7e904cf79944357d023877929430bc58eb2dae168e73cedf' >>> h.digest() b'VD\x1bVm\xb9\xaa\xfc\xf8\xcd\xad:G)\xfaK+\xfa\xab\n\xda6\x15^' b'\xce)\xf5/\xf7\x0e\x1e\x9d\x7fT\xca\xcf\xe4K\xc9|~\x90L\xf7' b'\x99D5}\x028w\x92\x940\xbcX\xeb-\xae\x16\x8es\xce\xdf' >>> h.block_size 128 >>> h.digest_size 64 >>> h.name 'blake2b' >>> hashlib.sha256(b'Hash me now!').hexdigest() '10d561fa94a89a25ea0c7aa47708bdb353bbb062a17820292cd905a3a60d6783' >>> import hashlib >>> h1 = hashlib.blake2b(b'Important data', digest_size=16, ... person=b'part-1') >>> h2 = hashlib.blake2b(b'Important data', digest_size=16, ... person=b'part-2') >>> h3 = hashlib.blake2b(b'Important data', digest_size=16) >>> h1.hexdigest() 'c06b9af95d5aa6307e7e3fd025a15646' >>> h2.hexdigest() '9cb03be8f3114d0f06bddaedce2079c4' >>> h3.hexdigest() '7d35308ca3b042b5184728d2b1283d0d' >>> import os >>> dk = hashlib.pbkdf2_hmac('sha256', b'Password123', ... salt=os.urandom(16), iterations=100000) >>> dk.hex() 'f8715c37906df067466ce84973e6e52a955be025a59c9100d9183c4cbec27a9e'