1. Python 中 MD5 哈希函數(shù)的實(shí)現(xiàn)

        共 2524字,需瀏覽 6分鐘

         ·

        2021-01-12 03:42

        在本文中,我們將學(xué)習(xí)Python中的MD5加密,并詳細(xì)討論其含義和用法。包括以下內(nèi)容:
        • 什么是MD5?

        • Python中的MD5哈希

        • 與md5相關(guān)的功能
          示例1:在Python中打印等效于MD5哈希的字節(jié)
          示例2:在Python中打印MD5哈希的十六進(jìn)制等效項(xiàng)
          示例3:Python MD5文件校驗(yàn)

        • 輸出與說明
          示例4:使用Python在MD5中編碼字符串

        • 輸出與說明
          示例5:在Python中計(jì)算文件的MD5哈希

        • 輸出與說明

        • 應(yīng)用范圍

        • 優(yōu)點(diǎn)

        • 缺點(diǎn)

        • 結(jié)論

        什么是MD5?
        MD5代表消息摘要算法。它是一個(gè)哈希函數(shù),可產(chǎn)生128位哈希值??捎米餍r?yàn)和驗(yàn)證數(shù)據(jù)完整性。它適用于非加密目的,例如確定分區(qū)數(shù)據(jù)庫中特定密鑰的分區(qū)。
        Python中的MD5哈希:
        該哈希函數(shù)在Python的hashlib模塊中可用。它以字節(jié)序列作為輸入,并返回128位哈希值作為輸出。散列函數(shù)的主要用途是檢查數(shù)據(jù)完整性,但存在安全性問題。
        與md5相關(guān)的功能:
        • encode():將字符串轉(zhuǎn)換為字節(jié)
        • digest(): 以字節(jié)格式返回編碼數(shù)據(jù)
        • hexdigest():以十六進(jìn)制格式返回編碼的數(shù)據(jù)
        示例1:在Python中打印等效于MD5哈希的字節(jié)
        import?hashlib?
        ?
        result?=?hashlib.md5(b'Python?Pool')?
        print("Hash?Value?:?",?end?="")
        print(result)
        print("Equivalent?Byte?:?",?end?="")?
        print(result.digest())?
        輸出和說明:

        在此代碼中,我們采用字節(jié)輸入,這是哈希函數(shù)可接受的。然后,我們使用md5哈希函數(shù)對該值進(jìn)行編碼。最后,我們使用digest()函數(shù)生成了編碼字符串的等效字節(jié)。
        示例2:在Python中打印MD5哈希的十六進(jìn)制等效項(xiàng)
        import?hashlib?
        ?
        result?=?hashlib.md5('Python?Pool'.encode())?
        print("Hash?Value?:?",?end?="")
        print(result)
        print("Hexadecimal?Equivalent?:?",?end?="")?
        print(result.hexdigest())?
        輸出和說明:

        在這里,我們使用encode()函數(shù)將字符串轉(zhuǎn)換為等效的字節(jié),從而使其被哈希函數(shù)接受。然后,我們使用md5函數(shù)對其進(jìn)行編碼,最后,使用hexdigest()函數(shù)顯示其十六進(jìn)制等效項(xiàng)。
        示例3:Python MD5文件校驗(yàn)
        md5_hash?=?hashlib.md5()
        ?
        file?=?open("test.txt",?"rb")
        content?=?file.read()
        md5_hash.update(content)
        ?
        result?=?md5_hash.hexdigest()
        print(result)
        輸出和說明:

        在此代碼中,調(diào)用hashlib.md5()函數(shù)以創(chuàng)建MD5對象。我們以“ rb”模式打開了一個(gè)文件,其中rb代表“ read bytes”。使用read()方法,我們將文件的內(nèi)容讀取到一個(gè)變量中。update()方法更新文件內(nèi)容。最后,使用hexdigest()方法,我們將哈希值轉(zhuǎn)換為等效的十六進(jìn)制值。
        示例4:使用Python在MD5中編碼字符串
        import?hashlib?
        string?=?"pythonpool.com"
        encoded=string.encode()
        result?=?hashlib.md5(encoded)
        print("String?:?",?end?="")
        print(string)
        print("Hash?Value?:?",?end?="")
        print(result)
        print("Hexadecimal?equivalent:?",result.hexdigest())
        輸出和說明:

        在此示例中,我們使用hashlib.md5()函數(shù)將字符串值編碼為哈希值。然后,我們使用hexdigest()方法來獲取生成的哈希值的十六進(jìn)制等效項(xiàng)。同樣,我們也可以使用digest()方法來獲取與生成的哈希值等效的字節(jié)。
        示例5:在Python中計(jì)算文件的MD5哈希
        import?hashlib
        ?
        with?open("sample.txt","rb")?as?f:
        ????bytes?=?f.read()
        ????print("Bytes?read?from?the?file:",bytes)
        ????result?=?hashlib.md5(bytes)
        ????print("Hah?Value:?",result)
        ????print("The?hexadecimal?equivalent:?")
        ????print(result.hexdigest())
        輸出和說明:

        在此代碼中,我們首先創(chuàng)建了一個(gè)示例文本文件。然后,我們以字節(jié)為單位讀取該文件的內(nèi)容。我們將字節(jié)轉(zhuǎn)換為哈希值,然后最終看到相同的十六進(jìn)制等效項(xiàng)。
        應(yīng)用范圍:
        • 在軟件中使用,以確保傳輸?shù)奈募暾麩o缺
        • 通過為在法律發(fā)現(xiàn)過程中交換的每個(gè)文檔提供唯一的標(biāo)識(shí)符,它也可用于電子發(fā)現(xiàn)(對可能涉及到訴訟相關(guān)的電子證據(jù)的歸檔和再現(xiàn))
        優(yōu)點(diǎn)
        • 提供一個(gè)任意大小的安全輸入(如果使用128位,則可以產(chǎn)生輸出)
        • 原始消息的消息摘要的生成非常簡單
        • 可以執(zhí)行具有任意位數(shù)的消息的消息摘要
        缺點(diǎn)
        • 容易出現(xiàn)哈希沖突的弱點(diǎn)
        • 沒有提供針對這些碰撞攻擊的安全性
        • 與優(yōu)化的SHA算法相比,速度相當(dāng)慢
        總結(jié)
        在本文中,我們討論了python中的md5哈希函數(shù)。我們看到了相同的各種示例,還了解了它的各種應(yīng)用。

        更多閱讀



        2020 年最佳流行 Python 庫 Top 10


        2020 Python中文社區(qū)熱門文章 Top 10


        Top 10 沙雕又有趣的 GitHub 程序

        特別推薦




        點(diǎn)擊下方閱讀原文加入社區(qū)會(huì)員

        瀏覽 37
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 欧美不卡在线视频 | 久久久久久逼 | 男女操逼网址 | 免费国产黄网站在线观看视频 | 国产又白又嫩又紧毛毛片 |