一、HASH
HASH——‘哈希’,輸入任意長度的值,生成固定長度的散列值。
注意:hash所生成的值在python程序本次運算時一直,下次程序運算時會生成另一個hash值。
二、MD5
MD5信息摘要算法
2.1功能:
1、輸入任意長度,經過算法,輸出128位固定長度
的值(數字指紋)。
2、不同的輸入,得到不同的結果(唯一性)
2.2特點:
1、壓縮性:輸入任意,MD5值長度固定
2、容易計算:原始數據很容易就能算出MD5的值。
3、抗修改:修改了一點點,所算出MD5值差別很大。
4、強碰撞:已知一個MD5值,想通過另一個值算出相同的值很難。
2.3是否可逆?
MD5是基於hash算法,在計算過程中原文數據就丟失了,所以不可逆。
2.4有什么用途?
1.防止被篡改
2.防止看到明文
3.數字簽名
# @File : 4.10.hash加密算法.py # @Software: PyCharm import hashlib # 1.將字符串,通過加密算法,變成固定長度的輸出 s = 'abc' print(len(str(hash(s)))*4, hash(s)) # 2.生成md5數字指紋。 # 第1種寫法: s2 = b'!@abc' # 定義字節型字符串 md = hashlib.md5() # 導入md5算法 md.update(s2) # 把值傳給md5算法 print(md.digest()) # 生成一個128位的2進制數 print('MD5', '長度:', len(md.hexdigest())*4, md.hexdigest()) # 第2種寫法: print(hashlib.md5("!@abc".encode("utf-8")).hexdigest()) # 3.SHA-1 hash = hashlib.sha1() hash.update('admin'.encode('utf-8')) print('SHA-1', '長度:', len(hash.hexdigest())*4, hash.hexdigest()) # 4.SHA-256 hash = hashlib.sha256() hash.update('admin'.encode('utf-8')) print('SHA-256', '長度:', len(hash.hexdigest())*4, hash.hexdigest()) # 5.SHA-384 hash = hashlib.sha384() hash.update('admin'.encode('utf-8')) print('SHA-384', '長度:', len(hash.hexdigest())*4, hash.hexdigest()) # 5.SHA-512 hash = hashlib.sha512() hash.update('admin'.encode('utf-8')) print('SHA-384', '長度:', len(hash.hexdigest())*4, hash.hexdigest())
