python基于RSA的非对称数字签名
时间: 2023-07-04 19:27:41 浏览: 94
基于RSA的数字签名
4星 · 用户满意度95%
下面是一个Python基于RSA的非对称数字签名的示例代码:
```python
import hashlib
import rsa
# 生成RSA密钥对
(private_key, public_key) = rsa.newkeys(512)
# 原始消息
message = "Hello, world!"
# 对原始消息进行哈希处理
hash_value = hashlib.sha256(message.encode('utf-8')).hexdigest()
# 使用私钥对哈希值进行数字签名
signature = rsa.sign(hash_value.encode('utf-8'), private_key, 'SHA-256')
# 使用公钥对数字签名进行验证
if rsa.verify(hash_value.encode('utf-8'), signature, public_key):
print("Signature is valid.")
else:
print("Signature is invalid.")
```
步骤说明:
1. 使用RSA算法生成一个512位的密钥对,其中包括公钥和私钥。
2. 生成一个原始消息。
3. 对原始消息进行哈希处理,使用SHA-256哈希函数生成一个256位的哈希值。
4. 使用私钥对哈希值进行数字签名,生成一个签名。
5. 使用公钥对签名进行验证,判断签名是否有效。
需要注意的是,数字签名只能保证消息的完整性、真实性和不可否认性,而不能保证消息的保密性。因此,在实际应用中,如果需要保证消息的保密性,可以对消息进行加密处理,然后再进行数字签名。
阅读全文