前言
在程序中我們經??梢钥吹接泻芏嗟募用芩惴ǎ热缯fMD5 sha1等,今天我們就來了解下這下加密算法的吧,在了解之前我們需要知道一個模塊嘛就是hashlib,他就是目前Python一個提供字符加密的模塊,它加密的字符類型為二進制編碼,所以直接加密字符串會報錯。
import hashlib
string='任性的90后boy'
#使用encode進行轉換
sha1 = hashlib.sha1()
sha1.update(string.encode('utf-8'))
res = sha1.hexdigest()
print("sha1采用encode轉換加密結果:",res)
#使用byte轉換為二進制
sha1 = hashlib.sha1()
sha1.update(bytes(string,encoding='utf-8'))
res = sha1.hexdigest()
print("sha1采用byte轉換的結果:",res)
可以使用下列這兩種方法任意一種獲取到hashlib中所有的散列算法集合:
import hashlib
a=hashlib.algorithms_available
b=hashlib.algorithms_guaranteed
print(a)
print(b)
下面我們挑選常用的集中算法來進行講解。
一、MD5
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD5的前身有MD2、MD3和MD4。
MD5算法具有以下特點:
1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
MD5的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。MD5是最常見的摘要算法,速度很快,生成結果是固定的128 bit字節,通常用一個32位的16進制字符串表示。
import hashlib
string='任性的90后boy'
md5 = hashlib.md5()
md5.update(string.encode('utf-8'))#轉碼,update里的必須是字節型
res = md5.hexdigest() #返回字符型摘要信息
print(md5.digest())#返回字節型的摘要信息
print("md5加密結果:",res)
二、sha1
安全散列算法,SHA1的結果是160 bit字節,通常用一個40位的16進制字符串表示
import hashlib
string='任性的90后boy'
sha1 = hashlib.sha1()
sha1.update(string.encode('utf-8'))
res = sha1.hexdigest()
print("sha1加密結果:",res)
三、sha224
安全散列算法
import hashlib
string='任性的90后boy'
sha224 = hashlib.sha224()
sha224.update(string.encode('utf-8'))
res = sha224.hexdigest()
print("sha224加密結果:",res)
四、sha256
安全散列算法
import hashlib
string='任性的90后boy'
sha256 = hashlib.sha256()
sha256.update(string.encode('utf-8'))
res = sha256.hexdigest()
print("sha256加密結果:",res)
五、sha384
安全散列算法
import hashlib
string='任性的90后boy'
sha384 = hashlib.sha384()
sha384.update(string.encode('utf-8'))
res = sha384.hexdigest()
print("sha384加密結果:",res)
六、sha512
安全散列算法
import hashlib
string='任性的90后boy'
sha512= hashlib.sha512()
sha512.update(string.encode('utf-8'))
res = sha512.hexdigest()
print("sha512加密結果:",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)
總結
好了,今天就跟大家說這么多,主要給大家介紹了md5、sha1、sha224、sha256、sha384、sha512和高級加密等集中算法,簡單介紹了每個算法的特點和使用方法,后續精彩敬請期待!
到此這篇關于盤點Python加密解密模塊hashlib的7種加密算法的文章就介紹到這了,更多相關Python hashlib加密解密模塊內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python排序算法的簡單實現方法
- Python實現K-means聚類算法并可視化生成動圖步驟詳解
- 用Python給圖像算法做個簡單應用界面
- python利用K-Means算法實現對數據的聚類案例詳解
- Python機器學習之Kmeans基礎算法
- Python自然語言處理之切分算法詳解
- python入門之算法學習
- python實現線性回歸算法
- Python實現七大查找算法的示例代碼
- 詳解Python牛頓插值法