hashlib模块

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: hashlib模块

哈希算法,也叫摘要算法。

  • 加密:通过加密解密算法,明文和密文可以相互转换。
  • md5、sha:这里的算法只能把明文变成密文,不能把密文解析成明文。

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

import hashlib
m=hashlib.md5()# m=hashlib.sha256() #使用md5算法
# m=hashlib.md5(‘abcd’, encode(‘utf-8’)) #加盐 – 在服务端加一些只有自己知道的信息,防止撞库反解
m.update('hello'.encode('utf8')) #需要先把字符串变成字节,通过encode方法,使用utf8编码,因为要把字符串变成字节,必须要编码方式
print(m.hexdigest())  #5d41402abc4b2a76b9719d911017c592 # - 位数是固定的
 #把不定长的字符串转换成定长的密文 – 32位,每个字符串对应的密文是唯一的
m.update('alvin'.encode('utf8')) #相当于对'helloalvin'加密
print(m.hexdigest())  #92a7e713c30abbb0319fa07da2a5c4af
m2=hashlib.md5()
m2.update('helloalvin'.encode('utf8'))
print(m2.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af

哈希的用途,如果京东淘宝在数据库中通过明文存储用户的账号密文,一旦黑客攻破数据库,所有用户的数据都丢失了。通过md5这种算法加密后,可以得到对每个信息数据一一对应的密文,把密文存在数据库中,即使黑客攻破,拿到密文,但是这个密文加密的数据是不可逆的-md5不可反解,无法翻译为明文。那么用户是怎么登录的呢?用户登陆的时候,会把密文的密码保存,每次登录都是密文与密文对比即可 , 无需反解,全部都是密文,密文对应密文即可。

撞库反解:维护一个特别大的数据库把字符串和密文的一一对应关系保存下来,然后一个一个的试。

撞库的解决方法:在加密时加上一些只有自己知道的信息,因为撞库反解所维护的数据库只有大家都熟悉的一些字符串以及密文对应关系。对客户端,从用户的角度设置复杂密码;对服务端,通过加盐 m=hashlib.md5(‘abcd’, encode(‘utf-8’))

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

import hashlib
# ######## 256 ########  算法越复杂,加密耗时越久
hash = hashlib.sha256('898oaFs09f'.encode('utf8'))
hash.update('alvin'.encode('utf8'))
print (hash.hexdigest())#e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密。

import hmac
h = hmac.new('alvin'.encode('utf8'))
h.update('hello'.encode('utf8'))
print (h.hexdigest())#320df9832eab4c038b6c1d7ed73a5940


相关文章
|
数据安全/隐私保护 Python
Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)
Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)
382 0
|
3月前
|
算法 安全 数据安全/隐私保护
hashlib和hmac模块的应用
hashlib和hmac模块的应用
23 0
|
5月前
|
算法 JavaScript 前端开发
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
227 1
|
7月前
|
存储 算法 安全
Python hashlib 模块
Python hashlib 模块
|
6月前
|
存储 算法 安全
我们来看一个简单的Python代码示例,它使用`hashlib`模块中的`md5()`和`sha256()`函数来计算字符串的哈希值。
我们来看一个简单的Python代码示例,它使用`hashlib`模块中的`md5()`和`sha256()`函数来计算字符串的哈希值。
|
7月前
|
算法 数据安全/隐私保护 Python
Python值hashlib的细节讲解
Python值hashlib的细节讲解
20 0
|
8月前
|
存储 算法 安全
Python的hashlib模块:7种加密算法深入剖析
Python的hashlib模块:7种加密算法深入剖析
407 0
|
算法 数据安全/隐私保护
python-- hashlib 模块
python-- hashlib 模块
|
存储 算法 数据安全/隐私保护
hashlib模块
hashlib模块
93 0
|
JavaScript 算法 安全
JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64 - Python/JS实现
本文仅仅介绍了常见的一些JS加密,并记录了JS和Python的实现方式 常见的加密算法基本分为这几类: (1)base64编码伪加密 (2)线性散列算法(签名算法)MD5 (3)安全哈希算法 SHAI (4)散列消息鉴别码 HMAC (5)对称性加密算法 AES,DES (6)非对称性加密算法 RSA
696 0
JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64 - Python/JS实现

热门文章

最新文章