用python实现RSA数字签名,要求可运行
时间: 2024-12-07 14:19:35 浏览: 10
在Python中实现RSA数字签名,你需要首先安装`cryptography`库,它是用于加密和解密操作的强大工具,包括RSA算法。以下是基本步骤:
```python
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey
from cryptography.hazmat.backends import default_backend
# 1. 生成RSA密钥对
private_key = RSAPrivateKey.generate(2048, default_backend())
public_key = private_key.public_key()
# 2. 需要签署的数据
data = b"Hello, world!"
# 3. 使用私钥进行签名
signer = private_key.signer(padding.PSS(
mgf=padding.MGF1(hashes.SHA256()), # 使用SHA256哈希函数
salt_length=padding.PSS.MAX_LENGTH # PSS模式盐长度
))
signer.update(data)
signature = signer.finalize()
# 4. 保存或发送签名数据
# 注意:在实际应用中,你会将签名和原始数据一起存储或发送,而不是单独发送签名。
# 示例如何验证签名
def verify_signature(public_key, data, signature):
verifier = public_key.verifier(signature, padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
))
verifier.update(data)
try:
verifier.verify()
return True
except Exception as e:
print(f"Signature verification failed: {e}")
return False
# 调用验证函数
is_verified = verify_signature(public_key, data, signature)
print(f"Signature verified: {is_verified}")
阅读全文