python3 hashlib加密库 md5 sha1 sha256 sha384 sha512 加盐

古城微笑少年丶 2021-08-29 18:20 529阅读 0赞

简介:

  用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。
在python3中已经废弃了md5和sha模块,简单说明下md5和sha的使用。

  什么是摘要算法呢?

  摘要算法又称为哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)用于加密相关的操作。

md5加密

  1. hash = hashlib.md5()
  2. hash.update('admin'.encode('utf-8'))
  3. print(hash.hexdigest())
  4. 21232f297a57a5a743894a0e4a801fc3

sha1加密

  1. hash = hashlib.sha1()
  2. hash.update('admin'.encode('utf-8'))
  3. print(hash.hexdigest())
  4. d033e22ae348aeb5660fc2140aec35850c4da997

sha256加密

  1. hash = hashlib.sha256()
  2. hash.update('admin'.encode('utf-8'))
  3. print(hash.hexdigest())
  4. 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

sha384加密

  1. hash = hashlib.sha384()
  2. hash.update('admin'.encode('utf-8'))
  3. print(hash.hexdigest())
  4. 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782

sha512加密

  1. hash = hashlib.sha512()
  2. hash.update('admin'.encode('utf-8'))
  3. print(hash.hexdigest())
  4. c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec

‘加盐’加密

以上加密算法虽然很厉害,但仍然存在缺陷,通过撞库可以反解。所以必要对加密算法中添加自定义key再来做加密。

  1. ###### md5 加密 ############
  2. hash = hashlib.md5('python'.encode('utf-8'))
  3. hash.update('admin'.encode('utf-8'))
  4. print(hash.hexdigest())
  5. 75b431c498b55557591f834af7856b9f

hmac加密

hmac内部对我们创建的key和内容进行处理后在加密

  1. import hmac
  2. h = hmac.new('python'.encode('utf-8'))
  3. h.update('helloworld'.encode('utf-8'))
  4. print(h.hexdigest())
  5. b3b867248bb4cace835b59562c39fd55

获取文件的MD5

  1. import hashlib
  2. def md5sum(filename):
  3. """
  4. 用于获取文件的md5值
  5. :param filename: 文件名
  6. :return: MD5码
  7. """
  8. if not os.path.isfile(filename): # 如果校验md5的文件不是文件,返回空
  9. return
  10. myhash = hashlib.md5()
  11. f = open(filename, 'rb')
  12. while True:
  13. b = f.read(8096)
  14. if not b:
  15. break
  16. myhash.update(b)
  17. f.close()
  18. return myhash.hexdigest()

发表评论

表情:
评论列表 (有 0 条评论,529人围观)

还没有评论,来说两句吧...

相关阅读