背景git
小編以前在作廣告接口自動化時,涉及到參數加密解密的邏輯,當時只知道MD5加密,後來從網上查了相關的方法,發現加密算法庫有好多,小編特地收集整理以下,但願對你們有所幫助。web
MD5加密算法
算法描述:安全
MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被普遍使用的密碼散列函數,能夠產生出一個128位(16字節)的散列值(hash value),用於確保信息傳輸完整一致。md5加密算法是不可逆的,因此解密通常都是經過暴力窮舉方法,經過網站的接口實現解密。微信
實踐demo:
函數
import hashlib測試
m = hashlib.md5()網站
m.update(str.encode("utf8"))加密
print(m.hexdigest())spa
註釋事項:
一、update方法只接受bytes類型,不然會報錯;這就是要在字符串傳入後轉換類型的緣由。
二、重複調用update(arg)方法,是會將傳入的arg參數進行拼接,
也就是說,m.update(a); m.update(b) 等價於m.update(a+b)。
SHA1加密
算法描述:
安全哈希算法(Secure Hash Algorithm)主要適用於數字簽名標準(Digital Signature Standard DSS)裏面定義的數字簽名算法(Digital Signature Algorithm DSA),SHA1比MD5的安全性更強。對於長度小於2^ 64位的消息,SHA1會產生一個160位的消息摘要。
實踐demo:
import hashlib
sha1 = hashlib.sha1()
num= '521'
sha1.update(num.encode('utf-8'))
sha1_num = sha1.hexdigest()
print(sha1_num)
註釋事項:
一、update方法只接受bytes類型,不然會報錯;同md5加密。
二、重複調用update(arg)方法,同md5加密,多個參數拼接。
HMAC加密
算法描述:
散列消息鑑別碼(Hash Message Authentication Code), HMAC加密算法是一種安全的基於加密hash函數和共享密鑰的消息認證協議。實現原理是用公開函數和密鑰產生一個固定長度的值做爲認證標識,用這個標識鑑別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即 MAC,並將其加入到消息中,而後傳輸。接收方利用與發送方共享的密鑰進行鑑別認證等。
實踐demo:
import hmac
message = b'Hello world'
key = b'secret'
h = hmac.new(key,message,
digestmod='MD5')
print(h.hexdigest())
註釋事項:
一、hmac.new方法前兩個參數都是bytes類型,不然會報錯;
DES加密
算法描述:
數據加密標準(Data Encryption Standard),屬於對稱加密算法。DES是一個分組加密算法,典型的DES以64位爲分組對數據加密,加密和解密用的是同一個算法。它的密鑰長度是56位(由於每一個第8 位都用做奇偶校驗),密鑰能夠是任意的56位的數,並且能夠任意時候改變。
實踐demo:
from pyDes import des, CBC, PAD_PKCS5
import binascii
# 祕鑰
KEY='mHAxsLYz'
def des_encrypt(s):
#加密
secret_key = KEY
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s, padmode=PAD_PKCS5)
return binascii.b2a_hex(en)
def des_descrypt(s):
#解密
secret_key = KEY
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s),
padmode=PAD_PKCS5)
return de
if __name__ == "__main__"
encrypt_str=des_encrypt('testsogou')
print(encrypt_str)
decrypt_str=des_decrypt(encrypt_str)
print(decrypt_str)
註釋事項:
一、des_encrypt返回的爲加密後的16進制字符串;
二、des_descrypt返回的爲解密後字符串。
小結
本期簡單介紹MD5加密,SHA1加密,HMAC加密,DES加密這幾種算法,感興趣的小夥伴能夠研究下,下期介紹AES加密、RSA加密、ECC加密算法,敬請期待!
搜狗測試微信號:Qa_xiaoming
搜狗測試QQ粉絲羣:459645679
本文分享自微信公衆號 - 搜狗測試(SogouQA)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。