美文网首页
Python中hmac.new与hashlib加密的区别

Python中hmac.new与hashlib加密的区别

作者: 杨卫祥_老杨提醒 | 来源:发表于2020-01-14 22:58 被阅读0次

    这两天碰到一个要求是:用户密码使用sha256做编码,保证服务器无法知道用户密码。也就是把密码使用sha256的方式加密。

    以前自己经常用hmac.new(hmac_key, msg, hashlib.sha256)的方式来加密,这次无论如何也过不了了。

    因为密码只有一个参数,我就把上述参数中的msg设为空,发现还是不行。

    后来在网上搜索找到一种说用hashlib来加密,指定加密方式为sha256,这样用hashlib.sha256()就可以了。

    于是就去试,看看能否通过验证,一试发现真的可以了。

    后来就想了解下,这两个到底什么区别:

    hashlib,hmac这两个都是Python中加密的函数,都是不可逆的加密,都是内置模块,直接导入即可使用.

    hashlib模块实现了sha1,sha224,sha256,sha384,sha512,md5等算法,交易所的加密中一般使用sha256或md5

    hmac模块需要一个msg来进行加密,hashlib并没有msg这个参数。

    即使在hmac中把msg设为空,它仍旧会把这个空值进行hash运算,所以和hashlib算出来的结果也不一样,这就是问题所在。

    也就是在使用中,如果有msg参数就使用hmac,否则使用hashlib就行了。

    hmac.new(key, msg, hashlib.sha256)

    hashlib.sha256(key)

    我们看个简单的案例,把密码123456使用两种sha256做编码,看看结果是否一致

    import hmac,hashlib

    hashPassword = hmac.new(b'123456',msg=None,digestmod=hashlib.sha256).hexdigest()

    print(hashPassword)

    hashPassword2=hashlib.sha256(b'123456').hexdigest()

    print(hashPassword2)

    在python中运行会发现两者结果如下,是不一样的

    b946ccc987465afcda7e45b1715219711a13518d1f1663b8c53b848cb0143441

    8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

    相关文章

      网友评论

          本文标题:Python中hmac.new与hashlib加密的区别

          本文链接:https://www.haomeiwen.com/subject/lodzactx.html