生成python基于RSA的非对称数字签名,认证信息为任意可输入数字
时间: 2024-02-28 14:51:56 浏览: 45
基于RSA的数字签名
4星 · 用户满意度95%
下面是一个基于RSA的数字签名的Python示例代码,使用了pycryptodome库,认证信息为任意可输入数字:
```python
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
# 生成RSA密钥对
key = RSA.generate(2048)
# 获取认证信息
auth_info = input("请输入认证信息:").encode('utf-8')
# 对认证信息进行哈希
hash_obj = SHA256.new(auth_info)
# 使用私钥对哈希值进行签名
signature = pkcs1_15.new(key).sign(hash_obj)
# 将签名和认证信息一起发送给接收方
# 接收方获取认证信息和签名
auth_info = input("请输入认证信息:").encode('utf-8')
signature = input("请输入签名:").encode('utf-8')
# 对认证信息进行哈希
hash_obj = SHA256.new(auth_info)
# 使用公钥对签名进行验证
try:
pkcs1_15.new(key.publickey()).verify(hash_obj, signature)
print("Signature is valid.")
except (ValueError, TypeError):
print("Signature is invalid.")
```
这个示例代码生成了一个2048位的RSA密钥对,获取输入的认证信息,并对认证信息进行哈希。然后,使用私钥对哈希值进行签名。接着,将签名和认证信息一起发送给接收方。
接收方获取输入的认证信息和签名,并对认证信息进行哈希。最后,使用公钥对签名进行验证,如果验证通过,则说明签名是有效的。
阅读全文