RSA算法的数字签名python
时间: 2023-07-25 19:25:46 浏览: 106
RSA算法的数字签名Python实现如下:
```python
import hashlib
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
# 生成RSA密钥对
key = RSA.generate(2048)
# 生成要签名的消息
message = b"Hello, world!"
# 对消息进行SHA256哈希
hash = SHA256.new(message)
# 使用私钥对哈希值进行签名
signature = pkcs1_15.new(key).sign(hash)
# 使用公钥对签名进行验证
try:
pkcs1_15.new(key.publickey()).verify(hash, signature)
print("Valid signature")
except (ValueError, TypeError):
print("Invalid signature")
```
这段代码中,首先使用 `RSA.generate(2048)` 生成了一个2048位的RSA密钥对,然后生成了要签名的消息 `message`。接着,对消息进行了SHA256哈希,使用私钥对哈希值进行签名,得到了签名 `signature`。最后使用公钥对签名进行验证,如果验证通过则输出 "Valid signature",否则输出 "Invalid signature"。
需要注意的是,在实际应用中,签名的消息和公钥通常是通过其他安全渠道传递的,这里为了演示方便将它们放在了一起。
阅读全文