Python3模块: hashlib

简介:

用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。

在python3中已经废弃了md5和sha模块,简单说明下md5和sha的使用。

什么是摘要算法呢?

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

应用:

  1. md5加密 1 hash = hashlib.md5() 2 hash.update('admin'.encode('utf-8')) 3 print(hash.hexdigest()) 4 21232f297a57a5a743894a0e4a801fc3
  2. sha1加密 1 hash = hashlib.sha1() 2 hash.update('admin'.encode('utf-8')) 3 print(hash.hexdigest()) 4 d033e22ae348aeb5660fc2140aec35850c4da997
  3. sha256加密 1 hash = hashlib.sha256() 2 hash.update('admin'.encode('utf-8')) 3 print(hash.hexdigest()) 4 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
  4. sha384加密 1 hash = hashlib.sha384() 2 hash.update('admin'.encode('utf-8')) 3 print(hash.hexdigest()) 4 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782
  5. sha512加密 1 hash = hashlib.sha512() 2 hash.update('admin'.encode('utf-8')) 3 print(hash.hexdigest()) 4 c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec
  6. ‘加盐’加密
  • 以上加密算法虽然很厉害,但仍然存在缺陷,通过撞库可以反解。所以必要对加密算法中添加自定义key再来做加密。 1 ###### md5 加密 ############ 2 hash = hashlib.md5('python'.encode('utf-8')) 3 hash.update('admin'.encode('utf-8')) 4 print(hash.hexdigest()) 5 75b431c498b55557591f834af7856b9f
  1. 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
  1. 获取文件的MD5 import hashlib def md5sum(filename): """ 用于获取文件的md5值 :param filename: 文件名 :return: MD5码 """ if not os.path.isfile(filename): # 如果校验md5的文件不是文件,返回空 return myhash = hashlib.md5() f = open(filename, 'rb') while True: b = f.read(8096) if not b: break myhash.update(b) f.close() return myhash.hexdigest()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JavaEE

spring和springboot中加密连接数据库的信息前言:一、spring中加密连接数据库的信息:二、springboot项目中加密数据库连接信息:总结:

在实际开发中,一些关键的信息肯定是要加密的,否则就太不安全了。比如连接数据库的用户名和密码,一般就需要加密。接下来就看看spring项目和spring boot...

26430
来自专栏用户2442861的专栏

Qt学习之路_6(Qt局域网聊天软件)

http://www.cnblogs.com/tornadomeet/archive/2012/07/04/2576355.html

33120
来自专栏web开发

前端AES的加密和解密

在工作的过程中,经常要对一些数据做一些加密,当然有复杂的加密和简单的加密,也有对称加密等等。总之加密的方式有很多。今天在这里,我只是简单的分享一个我最近遇到的加...

1.7K80
来自专栏用户2442861的专栏

Qt学习之路_6(Qt局域网聊天软件)

http://www.cnblogs.com/tornadomeet/archive/2012/07/04/2576355.html

18710
来自专栏三好码农的三亩自留地

浅析 RxJava 2.x 线程调度

为了说明原理,排除干扰,这里用了最简单的逻辑。产生一个字符串“Hello rxJava”, 然后在监听中打印log,subscribeOn(Schedulers...

11610
来自专栏北京马哥教育

Python3 加密解密技术详解

引言 Python 3 的标准库中没多少用来解决加密的,不过却有用于处理哈希的库。 在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyC...

80850
来自专栏Scott_Mr 个人专栏

RxSwift 系列(三) -- Combination Operators

37170
来自专栏王沛文的专栏

Web Crypto API简介

早年在web端做对称/非对称的加解密还是个很复杂的操作,由于没有js层面的基础库。很多基础设施只能从头开始。

48000
来自专栏Android开发实战

Security "Crypto" provider deprecated in Android N

我们知道加密[算法]都是需要密钥的,比如 AES 算法支持128 比特、192 比特和 256 比特三种长度的密钥,通常这些密钥会被转化成字节数组明文写在代码中...

15650
来自专栏草根专栏

RxJS速成 (下)

Subject Subject比较特殊, 它即是Observable又是Observer. 作为Observable, Subject是比较特殊的, 它可以对多...

35140

扫码关注云+社区

领取腾讯云代金券