您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關python中hashlib模塊有什么用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
密碼散列函數通過哈希算法(又稱摘要算法、散列算法)將任意長度的數據轉換為一個固定長度的二進制數據(通常用16進制字符串表示)。
常見的密碼散列函數有:md5是128位(32個字符)、sha1是160位(40個字符)、sha224(224位56個字符)、sha384(384位66個字符)、sha3_224(224位56個字符)、sha3_256(256位64個字符)、sha3_384(384位96個字符)、sha3_512(512位128個字符)、sha512(512位128個字符)、shake_128(128位32個字符)、shake_256(256位64個字符)等等。
密碼散列函數的特點:通過哈希算法對任意長度的數據計算出固定長度的摘要。對相同的數據計算得出的摘要相同;對不同的數據計算得出的摘要不同(存在非常非常低概率不同數據得出相同摘要,簡稱碰撞);無法通過摘要還原數據。所以可通過對比摘要檢查數據是否被篡改。
密碼散列的作用有:電子簽名、防篡改、存儲密碼等等。
另外:目前 MD5、SHA1 已經被證實存在隱患,更推薦使用sha2和sha3。
以下是sha2和sha3使用案例(請注意加鹽用法,即對字符串計算哈希值之前添加干擾值。可以提高安全性和降低撞庫的可能性):
import hashlib sha2 = hashlib.sha224() # 標準sha2用法sha2.update("Test sha2".encode("utf8"))print(sha2.hexdigest())sha2 = hashlib.sha224('eqwro'.encode('utf8')) # 加鹽sha2用法sha2.update("Test sha2".encode("utf8"))print(sha2.hexdigest())sha3 = hashlib.sha3_224() # 標準sha3用法sha3.update("Test sha2".encode("utf8"))print(sha3.hexdigest())sha3 = hashlib.sha3_224('eqwro'.encode('utf8')) # 加鹽sha3用法sha3.update("Test sha2".encode("utf8"))print(sha3.hexdigest())out:844e8c2c97312b6344377e49a412e2545e75a7b551f9551038a5f451a2cb1365509f141da28fe3935f7f6c8c6ef7b3fb347004f98d8b283c f92459c0c2ccc081e26d607b8fd39f804f6a57641446f6be01d4596f c2320f0da1a04385b1518fdeb69ddcdf34e5b25996447d2cfbb25f9f
python的hashlib模塊中沒有直接計算文件哈希值的方法,可以通過以下方法實現對文件計算哈希值。
def sha3_file(file_path, salt='', buffers=1024):sha3 = hashlib.sha3_224(salt.encode('utf8'))with open(file_path, 'rb') as f:while data := f.read(buffers):sha3.update(data)return sha3.hexdigest()print(sha3_file('all1.jpg'))out:c88d28d070e6ec978b6d51814ca7e7c27b8a2bf26b58819826815d2c
上述就是小編為大家分享的python中hashlib模塊有什么用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。