背景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源创计划”,欢迎正在阅读的你也加入,一块儿分享。