hashlib 模块

发布时间 2023-06-13 16:17:59作者: 凡人半睁眼

一、什么是摘要算法

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

用于生成数据或文本的简短摘要或哈希值的算法。它们被广泛应用于密码学、数据完整性验证和信息检索等领域。摘要算法通过对输入数据进行计算和转换,生成一个固定长度的输出,通常称为摘要、哈希值或指纹。

2、摘要算法具有以下特点:

  1. 输入数据的微小变化会导致输出值的显著变化,这被称为雪崩效应。即使输入数据只有微小的改动,摘要值也会有很大差异。
  2. 摘要算法是单向的,即从摘要值无法推导出原始输入数据。这意味着无法通过摘要值逆向还原出原始数据。
  3. 摘要算法是快速计算的,无论输入数据的大小,生成摘要值的计算速度都相对较快。

3、常见的摘要算法包括:

  1. MD5(Message Digest Algorithm 5):MD5是一种广泛使用的摘要算法,生成128位的摘要值。然而,由于其易受碰撞攻击的安全性问题,现已不推荐在安全敏感的场景中使用。
  2. SHA(Secure Hash Algorithm)系列:SHA系列算法包括SHA-1、SHA-256、SHA-384和SHA-512等,它们分别生成不同长度的摘要值。SHA-256是目前广泛使用的安全摘要算法之一。
  3. CRC(Cyclic Redundancy Check):CRC算法主要用于数据完整性校验,生成固定位数的校验值。它常用于网络传输或存储介质中的数据错误检测。

摘要算法的主要应用包括文件完整性验证、数字签名、密码存储、数据去重和信息检索等领域。它们提供了一种快速、安全且有效的方式来处理大量数据并验证其完整性。

二、进行加密操作

1、加密操作的基本使用

先选择加密方式:md系列、sha系列

不同的加密方式,加密出来的结果长度越长,被破解的难度越大,但是,在数据传输的过程中,占用资源的就越多

m = hashlib.md5() 

对数据进行加密,此处对‘hello’进行加密

m.update('hello'.encode('utf8')) # update函数里面的数据必须是字节类型 bytes类型的

获取加密之后的结果

res = m.hexdigest()
print(res) # 5d41402abc4b2a76b9719d911017c592

2、对数据进行加密

m.update('123456'.encode('utf8'))
或者
m.update(b'123456')

注意⚠️:update函数里面的数据必须是字节类型 bytes类型的,否则报错

TypeError: Unicode-objects must be encoded before hashing

三、实际应用