1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        盤點(diǎn)Python加密解密模塊hashlib的7種加密算法

        共 3898字,需瀏覽 8分鐘

         ·

        2021-04-15 22:30

        點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

        回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書

        潮平兩岸闊,風(fēng)正一帆懸。

            大家好,我是黃偉。今天給大家介紹hashlib模塊!

        前言

            在程序中我們經(jīng)??梢钥吹接泻芏嗟募用芩惴?,比如說MD5 sha1等,今天我們就來了解下這下加密算法的吧,在了解之前我們需要知道一個模塊嘛就是hashlib,他就是目前Python一個提供字符加密的模塊,它加密的字符類型為二進(jìn)制編碼,所以直接加密字符串會報(bào)錯。

        import hashlibstring='任性的90后boy'#使用encode進(jìn)行轉(zhuǎn)換sha1 = hashlib.sha1()sha1.update(string.encode('utf-8'))res = sha1.hexdigest()print("sha1采用encode轉(zhuǎn)換加密結(jié)果:",res)#使用byte轉(zhuǎn)換為二進(jìn)制sha1 = hashlib.sha1()sha1.update(bytes(string,encoding='utf-8'))res = sha1.hexdigest()print("sha1采用byte轉(zhuǎn)換的結(jié)果:",res)

        可以使用下列這兩種方法任意一種獲取到hashlib中所有的散列算法集合:

        import hashliba=hashlib.algorithms_available b=hashlib.algorithms_guaranteedprint(a)print(b)

        下面我們挑選常用的集中算法來進(jìn)行講解。


        一、MD5

        MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于確保信息傳輸完整一致。是計(jì)算機(jī)廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實(shí)現(xiàn)。將數(shù)據(jù)(如漢字)運(yùn)算為另一固定長度值,是雜湊算法的基礎(chǔ)原理,MD5的前身有MD2、MD3和MD4。

        MD5算法具有以下特點(diǎn):

        1、壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的。

        2、容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易。

        3、抗修改性:對原數(shù)據(jù)進(jìn)行任何改動,哪怕只修改1個字節(jié),所得到的MD5值都有很大區(qū)別。

        4、強(qiáng)抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。

        MD5的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節(jié)串變換成一定長的十六進(jìn)制數(shù)字串)。MD5是最常見的摘要算法,速度很快,生成結(jié)果是固定的128 bit字節(jié),通常用一個32位的16進(jìn)制字符串表示。

        import hashlibstring='任性的90后boy'md5 = hashlib.md5() md5.update(string.encode('utf-8'))#轉(zhuǎn)碼,update里的必須是字節(jié)型res = md5.hexdigest() #返回字符型摘要信息print(md5.digest())#返回字節(jié)型的摘要信息print("md5加密結(jié)果:",res)


        二、sha1

        安全散列算法,SHA1的結(jié)果是160 bit字節(jié),通常用一個40位的16進(jìn)制字符串表示

        import hashlibstring='任性的90后boy'sha1 = hashlib.sha1()sha1.update(string.encode('utf-8'))res = sha1.hexdigest()print("sha1加密結(jié)果:",res)


        三、sha224

        安全散列算法

        import hashlibstring='任性的90后boy'sha224 = hashlib.sha224()sha224.update(string.encode('utf-8'))res = sha224.hexdigest()print("sha224加密結(jié)果:",res)


        四、sha256

        安全散列算法

        import hashlibstring='任性的90后boy'sha256 = hashlib.sha256()sha256.update(string.encode('utf-8'))res = sha256.hexdigest()print("sha256加密結(jié)果:",res)


        五、sha384

        安全散列算法

        import hashlibstring='任性的90后boy'sha384 = hashlib.sha384()sha384.update(string.encode('utf-8'))res = sha384.hexdigest()print("sha384加密結(jié)果:",res)


        六、sha512

        安全散列算法

        import hashlibstring='任性的90后boy'sha512= hashlib.sha512()sha512.update(string.encode('utf-8'))res = sha512.hexdigest()print("sha512加密結(jié)果:",res)


        七、高級加密

        以上加密算法雖然依然非常厲害,但時候存在缺陷,即:通過撞庫可以反解。所以,有必要對加密算法中添加自定義key再來做加密。

        md5 = hashlib.md5()md5.update('md5'.encode('utf-8'))res = md5.hexdigest()print("普通加密:",res)md51 = hashlib.md5(b'md512')md51.update('md51'.encode('utf-8'))res = md51.hexdigest()print("采用key加密:",res)


        總結(jié)

        好了,今天就跟大家說這么多,主要給大家介紹了md5、sha1、sha224、sha256、sha384、sha512和高級加密等集中算法,簡單介紹了每個算法的特點(diǎn)和使用方法,后續(xù)精彩敬請期待!

        想要學(xué)習(xí)更多網(wǎng)絡(luò)爬蟲知識,請點(diǎn)擊閱讀原文前往爬蟲網(wǎng)站。

        ------------------- End -------------------

        往期精彩文章推薦:

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        想加入Python學(xué)習(xí)群請?jiān)诤笈_回復(fù)【入群

        萬水千山總是情,點(diǎn)個【在看】行不行

        /今日留言主題/

        隨便說一兩句吧~

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产偷拍自拍视频 | 国产a级毛片精品视频 | 成人三级av| 婷婷丁香五月天操逼 | 久久99精品一区二区三区 | jizz成熟丰满老女人印度女人 | 91洗浴按摩女技师在线 | 色综合久| 日韩黄毛片 | 淫淫网站|