Python加密方法基本库

2020-11-02 10:34:47 浏览数 (1)

背景

小编之前在做广告接口自动化时,涉及到参数加密解密的逻辑,当时只知道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加密算法,敬请期待!

0 人点赞