首页 > 编程 > Python > 正文

python3中的md5加密实例

2020-02-15 21:34:15
字体:
来源:转载
供稿:网友

在python3的标准库中,已经移除了md5,而关于hash加密算法都放在hashlib这个标准库中,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。

另:在网上找关于python的md5加密,发现要不是比较旧的不适用当前py版本的文章,或者是说得不够清楚的文章,所以还是自己去看下官方文档比较好,顺便整理下关于md5的使用方法。

对于学习任何一门程序类知识,我都认为去看官方文档这种学习方式最有效的之一,只不过一般这些文档都是英文版的,对于一些学习者来说可能会有一定门槛,但习惯于阅读英文文章,是非常重要的。

建议直接阅读python3的hashlib文档:

https://docs.python.org/3/library/hashlib.html?highlight=hashlib#credits

在hashlib库的hash算法中,提供了很多加密算法,有 sha1()、sha224()、sha256()、sha384()、sha512()、blake2b()和 blake2s()、md5(),这些方法都通过统一接口返回一个对象,例如,使用sha256()可以创建一个SHA-256的哈希对象。

当然,进行md5加密算法,就要用到md5()方法:

>>> import hashlib>>> m = hashlib.md5()>>> m.update(b'123')>>> m.hexdigest()'202cb962ac59075b964b07152d234b70'# 或者可以这样>>> hashlib.md5(b'123').hexdigest()'202cb962ac59075b964b07152d234b70'# 也可以使用hash.new()这个一般方法>>> hashlib.new('md5', b'123').hexdigest()'202cb962ac59075b964b07152d234b70'

以上是对于英文进行md5加密的,如果要对中文进行加密,发现按照上面来写会报错,原因在于字符转码问题,要如下写:

>>> import hashlib>>> data = '你好'>>> hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()'7eca689f0d3389d9dea66ae112e5cfd7'

此处先将数据转换成UTF-8格式的,使用网上工具对比下加密的结果,发现有的md5加密工具并不是使用UTF-8格式加密的。

经测试目前发现可以转为UTF-8、GBK、GB2312、GB18030,不分大小写(因为GBK/GB2312/GB18030均是针对汉字的编码,所以md5加密后结果一样)。

除了这些编码格式之外,还会有其他编码的,目前还没发现,等各位补充。

看下面实例:

>>> hashlib.md5('你好'.encode(encoding='UTF-8')).hexdigest()'7eca689f0d3389d9dea66ae112e5cfd7'>>> hashlib.md5('你好'.encode(encoding='GBK')).hexdigest()'b94ae3c6d892b29cf48d9bea819b27b9'>>> hashlib.md5('你好'.encode(encoding='GB2312')).hexdigest()'b94ae3c6d892b29cf48d9bea819b27b9'>>> hashlib.md5('你好'.encode(encoding='GB18030')).hexdigest()'b94ae3c6d892b29cf48d9bea819b27b9'


如果你仅仅查md5的写法,看上面实例就够了;

如果你是python新手,想了解这些方法的意思和用法,继续看下面内容。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表