# # md5加密:不可逆加密# # 碰撞解密:用資料再進行一次加密,與原加密結果做匹配
import hashlib
data = '資料'
###這個必須是字串型別的,其他型別的不可以
lock_obj = hashlib.md5(data.encode('utf-8'))
# 傳入加密資料,生產加密鎖物件,
result = lock_obj.hexdigest()
# 獲取加密後的16進製制的加密串
print(result)
print('***************==')
data1 = '資料資料資料資料資料資料資料資料資料資料資料資料'
data2 = ''
lock_obj1 = hashlib.md5(data1.encode('utf-8')) # 生產加密鎖物件,傳入加密資料
lock_obj2 = hashlib.md5(data2.encode('utf-8')) # 生產加密鎖物件,傳入加密資料
result1 = lock_obj1.hexdigest() # 獲取加密後的加密串
result2 = lock_obj2.hexdigest() # 獲取加密後的加密串
print(result1)
print(result2)
###不管傳入的資料長度是多少,生成的這個md5驗證碼長度始終是一樣的
print('***************===')
###利用update 將乙個資料分幾次上傳
# # update可以往鎖物件中新增加密資料
date = '123456789'
##一次性將123456789上傳加密
obj = hashlib.md5(date.encode('utf-8'))
print(obj.hexdigest())
##分三次將資料上傳加密
lock_obj = hashlib.md5()
lock_obj.update(b'123')
lock_obj.update(b'456')
lock_obj.update(b'789')
print(lock_obj.hexdigest())
###從程式的執行結果看,只要資料內容是一樣的,使用同一套加密演算法,
# 不管是分幾次上傳資料加密,得到的結果都是一樣的
print(hashlib.md5('123abc嘿嘿000'.encode('utf-8')).hexdigest())
###當加密的內容中包含漢字,需要編碼一下 加上.encode('utf-8)
# 注:要為新資料提供加密,一定要為該資料建立乙個加密物件
# # 加鹽
# # 什麼是加鹽:在原資料前或後新增一些預定的資料,與原資料一起進行加密
# # 為什麼要加鹽:
# # 1.當原資料過於簡單,可以對其加鹽,提高資料的複雜度
# # 2.鹽與資料有一定相似度,混淆對真實資料的提取
## data = 'ab_12'
# lock_obj = hashlib.md5()
# lock_obj.update(b'a12_d')
# lock_obj.update(data.encode('utf-8'))
# lock_obj.update(b'dd_121')
# print(lock_obj.hexdigest())
# # a12_dab_12dd_121##
# # 其他位數加密
# lock_obj = hashlib.sha3_256(b'123')
# print(lock_obj.hexdigest())
# lock_obj = hashlib.sha3_512(b'123')
# lock_obj.update(b'salt')
# print(lock_obj.hexdigest())##
# import hmac
# # 與hashlib的不同點:生產鎖物件時必須提高資料引數
# lock_obj = hmac.new(b'')
# print(lock_obj.hexdigest())
## lock_obj = hmac.new(b'')
# lock_obj.update(b'salt')
# print(lock_obj.hexdigest())
# import hashlib
# 加鹽
# 什麼是加鹽:在原資料前或後新增一些預定的資料,與原資料一起進行加密
# 為什麼要加鹽:
# 1.當原資料過於簡單,可以對其加鹽,提高資料的複雜度
# 2.鹽與資料有一定相似度,混淆對真實資料的提取
# lock_obj = hashlib.md5() # 生產鎖物件可以新增資料引數也可以省略
# lock_obj.update(b'before_salt')
# lock_obj.update('要被加密的資料'.encode('utf-8'))
# lock_obj.update(b'after_salt')
# print(lock_obj.hexdigest())
# 注:要為新資料提供加密,一定要為該資料建立乙個加密物件
# 其他演算法
# lock_obj = hashlib.sha3_256(b'123')
# print(lock_obj.hexdigest())
# lock_obj = hashlib.sha3_512(b'123')
# lock_obj.update(b'salt')
# print(lock_obj.hexdigest())
加密模組hashlib模組
資料時代,為了防止資料安全性,防止資料洩露,會對資料進行加密,對於一些敏感資料庫,更是如此。加密是最常見的保密手段,利用技術手段把重要的資料變為亂碼。hash型別屬於雜湊型別,把任意長度的資料通過演算法函式轉換成固定長度的值,特點 不可逆 無法根據雜湊值來還原原來的資料 定長輸出 無論輸入的原始資料...
python加密模組 hashlib模組
用於加密相關的操作,3.x裡代替了md5模組和sha模組,主要提供sha1,sha224,sha256,sha384,sha512,md5演算法 sha比md5 更複雜 md5 不能反解 具體使用方法 匯入模組 import hashlib 生成乙個加密的物件並複製給變數 m hashlib.md5...
專題 Python加密模組hashlib的使用
以常見的加密演算法md5為例,計算乙個字串的md5值 import hashlib md5 hashlib.md5 update函式的加密文字 英文必須是ascii的二進位制格式 md5.update b how are you?i fine,and you?print md5.hexdigest ...