一、什么是摘要算法
1、摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)
用于生成数据或文本的简短摘要或哈希值的算法。它们被广泛应用于密码学、数据完整性验证和信息检索等领域。摘要算法通过对输入数据进行计算和转换,生成一个固定长度的输出,通常称为摘要、哈希值或指纹。
2、摘要算法具有以下特点:
- 输入数据的微小变化会导致输出值的显著变化,这被称为雪崩效应。即使输入数据只有微小的改动,摘要值也会有很大差异。
- 摘要算法是单向的,即从摘要值无法推导出原始输入数据。这意味着无法通过摘要值逆向还原出原始数据。
- 摘要算法是快速计算的,无论输入数据的大小,生成摘要值的计算速度都相对较快。
3、常见的摘要算法包括:
- MD5(Message Digest Algorithm 5):MD5是一种广泛使用的摘要算法,生成128位的摘要值。然而,由于其易受碰撞攻击的安全性问题,现已不推荐在安全敏感的场景中使用。
- SHA(Secure Hash Algorithm)系列:SHA系列算法包括SHA-1、SHA-256、SHA-384和SHA-512等,它们分别生成不同长度的摘要值。SHA-256是目前广泛使用的安全摘要算法之一。
- 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
三、实际应用