python3中的md5加密实例

  

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

  

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

  

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

  

  

https://docs.python.org/3/library/hashlib.html& # 63;突出=hashlib #学分

  

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

  

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

        在在在进口hashlib   在在在m=hashlib.md5 ()   在在在m.update (b ' 123 ')   在在在m.hexdigest ()   202 cb962ac59075b964b07152d234b70      #或者可以这样   在在在hashlib.md5 (b‘123’) .hexdigest ()   202 cb962ac59075b964b07152d234b70      #也可以使用hash.new()这个一般方法   在在在hashlib。新(md5, b ' 123 ') .hexdigest ()   202 cb962ac59075b964b07152d234b70      

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

        在在在进口hashlib   在在在数据=' https://www.yisu.com/zixun/你好”   在在在hashlib.md5 (data.encode(编码=皍tf - 8”)) .hexdigest ()   “7 eca689f0d3389d9dea66ae112e5cfd7”      

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

  

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

  

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

  

<强>看下面实例:

        在在在hashlib.md5(“你”好.encode(编码=皍tf - 8”)) .hexdigest ()   “7 eca689f0d3389d9dea66ae112e5cfd7”      在在在hashlib.md5(“你”好.encode(编码=' GBK ')) .hexdigest ()   “b94ae3c6d892b29cf48d9bea819b27b9”      在在在hashlib.md5(“你”好.encode(编码=' GB2312 ')) .hexdigest ()   “b94ae3c6d892b29cf48d9bea819b27b9”      在在在hashlib.md5(“你”好.encode(编码=' GB18030 ')) .hexdigest ()   “b94ae3c6d892b29cf48d9bea819b27b9”   之前      


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

  

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

  

<>强解析

  

  

这是个一般性方法。

  

名称传入的是哈希加密算法的名称,如md5;

  

数据传入的是需要加密的数据,可忽略,在之后更新()中传入。

        在在在m=hashlib.new (md5)   在在在m.update (b ' 123456 ')   在在在m.hexdigest ()   202 cb962ac59075b964b07152d234b70      


  可以使用hashlib.algorithms_guaranteed或者hashlib.algorithms_available这两个内置属性查看hashlib支持哪些加密算法。

  

hashlib。algorithms_guaranteed是在所有平台上,保证被hashlib模块支持的哈希算法名称的集合。
  

  

hashlib。algorithms_available是在当前运行python的编译器可用的哈希算法名称的集合,由于OpenSSL的原因,在这当中可能会出现重复的哈希算法名称。
  

  

hashlib.algorithms_guaranteed是hashlib.algorithms_available的子集。

  

<强>看下面输出:

        在在在hashlib.algorithms_guaranteed   {‘sha3_384’,‘md5’,‘blake2s’,‘sha3_512’,‘blake2b’,‘shake_128’,‘sha384’,‘sha3_256’,‘sha1’,‘shake_256’,‘sha3_224’,‘sha512’,‘sha256’,‘sha224}   在在在hashlib.algorithms_available   {“漩涡”,‘ripemd160’,‘dsaEncryption’,‘sha1’,‘SHA224’,‘sha512’,‘sha256’,‘sha512’,‘blake2s’,‘blake2b’,‘sha256’,‘sha384’,‘sha3_256’,‘sha384’,‘沙’,‘SHA224’,‘ripemd160’,‘shake_128’,‘sha3_512’,‘沙’,‘MD5’,‘shake_256’,‘DSA’,‘sha3_384’,‘DSA-SHA’,‘ecdsa-with-SHA1’,‘MD5’,‘sha1’,‘dsaWithSHA’,‘md4’,‘md4’,‘sha3_224}

python3中的md5加密实例