用之內(nèi)置hashlib庫的哈希算法介紹)
它是一個屬于特定范疇的內(nèi)置模塊, 此模塊提供了諸如 SHA1 以及 MD5 等多種哈希算法, 這些算法具備特定特性: 能夠接受源于任意長度的字節(jié)數(shù)據(jù)當(dāng)作入?yún)⑦M 行處理, 之后輸出一個處于固定長度狀態(tài)的“哈希值”, 而這個“哈希值”通常是被用于校驗數(shù)據(jù)完整性方面的, 并且該算法擁有不可逆的屬性即無法憑借計算得出的哈希值反向計算出原始數(shù)據(jù)。使用若要運用這個模塊, 直接將其導(dǎo)入就行。接著借助new這個方法或者還有其他方法去創(chuàng)建出一個哈希對象, 憑借調(diào)用該對象的特定方法來給予需要進行哈希處理的數(shù)據(jù)此一種方法支援以分批的形式提供數(shù)據(jù), 最終經(jīng)由調(diào)用另一個特定方法來取得呈現(xiàn)為十六進制格式的哈希值字符串, 又或者借助別的方法去獲取字節(jié)串。常用方法介紹把md5, sha1逐一分解, 自成一體, 獨立呈現(xiàn), 單獨羅列, 獨自展示, () 分別闡明, 另外各自表述全文完畢。示例使用 SHA-256 算法得到哈希值import hashlib #字符串 message Hello, world! # 創(chuàng)建一個SHA256對象 hash_ins hashlib.sha256() #new方法和sha256方法類似大家都可使用 #hash_object hashlib.new(sha256) # 提供字節(jié)數(shù)據(jù) hash_ins.update(message.encode()) # 獲取散列值的十六進制表示 print(fSHA-256 哈希值: {hash_ins.hexdigest()})結(jié)果SHA-256 哈希值: edd3示例校驗文件的完整性。定義一個文件借由open函數(shù)去打開文件對象, 借助read函數(shù)等獲取文件內(nèi)容, 憑借方法算出全部文件內(nèi)容的哈希值。file config.txt #文件內(nèi)容隨意填充 with open(file,rb) as f: hash_ins hashlib.sha256 () while True: #每次讀取100字節(jié) content f.read(100) if content: hash_ins.update(content) else: #當(dāng)文件讀取完畢后打印最后的哈希值 print(hash_ins.hexdigest()) break執(zhí)行后結(jié)果2b20在我們把文件內(nèi)容作出更改一個字符的操作之后, 我們再次去執(zhí)行, 結(jié)果呈現(xiàn)為如下這般。b1d5由此可以判定文件內(nèi)容已被更新達(dá)到校驗文件完整性的目的。一起來將此作為激勵: 出自東漢時期班固所著的《漢書·枚乘傳》當(dāng)中的話語, 其內(nèi)容為, 泰山之上的水滴能夠穿透石頭, 細(xì)弱的井繩可以磨斷井闌。水并非石之鉆, 繩索并非木之鋸, 然而卻是日漸侵蝕讓它們變成這樣的結(jié)果了。-----指水滴不斷地滴可以滴穿石頭-----比喻堅持不懈集細(xì)微的力量也能成就難能的功勞。----感謝讀者的閱讀和學(xué)習(xí)點個贊和關(guān)注吧謝謝大家。