背景
小编之前在做广告接口自动化时,涉及到参数加密解密的逻辑,当时只知道MD5加密,后来从网上查了相关的方法,发现加密算法库有好多,小编特意收集整理如下,希望对大家有所帮助。
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())
注释事项:
1、update方法只接受bytes类型,否则会报错;这就是要在字符串传入后转换类型的原因。
2、重复调用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)
注释事项:
1、update方法只接受bytes类型,否则会报错;同md5加密。
2、重复调用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())
注释事项:
1、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)
注释事项:
1、des_encrypt返回的为加密后的16进制字符串;
2、des_descrypt返回的为解密后字符串。
小结
本期简单介绍MD5加密,SHA1加密,HMAC加密,DES加密这几种算法,感兴趣的小伙伴可以研究下,下期介绍AES加密、RSA加密、ECC加密算法,敬请期待!