数字签名的 基本原理
时间: 2024-06-13 20:07:41 浏览: 253
数字签名的过程和原理
4星 · 用户满意度95%
数字签名是一种用于验证数字信息完整性和真实性的技术。其基本原理如下:
1. 发送方使用哈希函数对原始数据进行处理,生成摘要信息。
2. 发送方使用自己的私钥对摘要信息进行加密,生成数字签名。
3. 接收方收到数字签名和原始数据后,使用发送方的公钥对数字签名进行解密,得到摘要信息。
4. 接收方使用相同的哈希函数对原始数据进行处理,生成摘要信息。
5. 接收方比较步骤3和步骤4生成的摘要信息是否一致,如果一致,则说明数字签名是有效的,原始数据没有被篡改过。
以下是一个Python示例,演示数字签名的基本原理:
```python
import hashlib
import rsa
# 生成密钥对
(pubkey, privkey) = rsa.newkeys(512)
# 原始数据
data = b"Hello, world!"
# 使用SHA-256哈希函数生成摘要信息
hash = hashlib.sha256(data).digest()
# 使用私钥对摘要信息进行加密,生成数字签名
signature = rsa.sign(hash, privkey, 'SHA-256')
# 将数字签名和原始数据发送给接收方
# 使用公钥对数字签名进行解密,得到摘要信息
hash = rsa.verify(data, signature, pubkey)
# 使用SHA-256哈希函数生成摘要信息
hash2 = hashlib.sha256(data).digest()
# 比较两个摘要信息是否一致
if hash == hash2:
print("数字签名有效,原始数据没有被篡改过。")
else:
print("数字签名无效,原始数据可能被篡改过。")
```
阅读全文