加密模組hashlib

2022-07-29 15:54:20 字數 2864 閱讀 2244

# # 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 ...