Python加密方法基本库



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

相关文章
相关标签/搜索