rsa数字签名程序实现
时间: 2023-06-24 20:03:55 浏览: 39
RSA 数字签名是一种非对称加密方式,常用于保证消息的完整性和认证发送者身份。以下是一个简单的 RSA 数字签名实现的 Python 代码示例:
```python
import hashlib
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
# 生成RSA密钥对
key = RSA.generate(2048)
# 获取私钥和公钥
private_key = key.export_key()
public_key = key.publickey().export_key()
# 使用私钥对消息进行签名
def sign_message(private_key, message):
key = RSA.import_key(private_key)
h = hashlib.sha256(message.encode('utf-8'))
signature = pkcs1_15.new(key).sign(h)
return signature
# 使用公钥验证签名
def verify_signature(public_key, message, signature):
key = RSA.import_key(public_key)
h = hashlib.sha256(message.encode('utf-8'))
try:
pkcs1_15.new(key).verify(h, signature)
return True
except (ValueError, TypeError):
return False
# 测试例子
msg = "Hello, world!"
signature = sign_message(private_key, msg)
print("Signature:", signature.hex())
verified = verify_signature(public_key, msg, signature)
print("Verified:", verified)
```
在上述代码中,首先使用 PyCrypto 模块生成 RSA 密钥对。然后,使用私钥对消息进行签名,使用公钥验证签名。最后,我们对一个例子进行测试。