【实战演练】python使用hashlib进行哈希加密
发布时间: 2024-06-28 22:07:27 阅读量: 69 订阅数: 90
![【实战演练】python使用hashlib进行哈希加密](https://img-blog.csdnimg.cn/a0d3a746b89946989686ff9e85ce33b7.png)
# 2.1 MD5算法
### 2.1.1 MD5算法原理
MD5(Message Digest 5)算法是一种广泛使用的哈希函数,用于生成一个128位的哈希值。它通过以下步骤工作:
- 将输入消息填充到512位的块中。
- 将块分成16个32位的字。
- 对字进行一系列非线性变换,包括逻辑运算、加法和循环移位。
- 将变换后的字组合成一个128位的哈希值。
### 2.1.2 MD5算法应用
MD5算法广泛用于:
- 密码存储:将密码转换为哈希值以安全地存储在数据库中。
- 文件完整性校验:生成文件的哈希值并将其与原始文件进行比较,以检测文件是否被篡改。
- 数字签名:生成文档或消息的哈希值,并将其与发送者的私钥一起签名,以验证签名者的身份和消息的完整性。
# 2. Python哈希加密算法
### 2.1 MD5算法
#### 2.1.1 MD5算法原理
MD5(Message Digest 5)算法是一种广泛使用的哈希函数,它将任意长度的消息转换为固定长度的128位(16字节)哈希值。MD5算法的工作原理如下:
1. **预处理:**将消息填充为512位(64字节)的块,并添加一个64位的长度值。
2. **初始化:**初始化四个32位的哈希值(A、B、C、D)。
3. **循环处理:**将512位块划分为16个32位字,并使用四个哈希值进行4轮迭代计算。每轮迭代包含16个子步骤,每个子步骤使用不同的常数和非线性函数。
4. **输出:**将四轮迭代后的哈希值连接起来,得到128位的MD5哈希值。
#### 2.1.2 MD5算法应用
MD5算法广泛应用于各种场景,包括:
- 密码加密:将密码哈希化为固定长度的值,以防止明文密码泄露。
- 文件完整性校验:生成文件的哈希值,并在传输或存储后进行比较,以确保文件未被篡改。
- 数字签名:生成消息的哈希值,并使用私钥对其进行签名,以验证消息的真实性和完整性。
### 2.2 SHA算法
#### 2.2.1 SHA算法原理
SHA(Secure Hash Algorithm)算法是一组哈希函数,包括SHA-1、SHA-256、SHA-384和SHA-512。这些算法的工作原理与MD5类似,但使用不同的迭代轮数和非线性函数,从而产生更安全的哈希值。
SHA-256算法的工作原理如下:
1. **预处理:**将消息填充为512位(64字节)的块,并添加一个64位的长度值。
2. **初始化:**初始化八个32位的哈希值(a、b、c、d、e、f、g、h)。
3. **循环处理:**将512位块划分为16个32位字,并使用八个哈希值进行64轮迭代计算。每轮迭代包含4个子步骤,每个子步骤使用不同的常数和非线性函数。
4. **输出:**将八轮迭代后的哈希值连接起来,得到2
0
0