基于python语言,通过rsa算法实现数字签名
时间: 2023-09-03 14:13:05 浏览: 128
下面是基于Python语言,通过RSA算法实现数字签名的代码示例:
```
import hashlib
import rsa
# 生成RSA密钥对
(pubkey, privkey) = rsa.newkeys(1024)
# 待签名的消息
message = 'Hello World!'
# 计算消息的哈希值
hash = hashlib.sha256(message.encode('utf-8')).hexdigest()
# 使用私钥对哈希值进行加密,得到签名
signature = rsa.sign(hash.encode('utf-8'), privkey, 'SHA-256')
# 将消息和签名一起发送给接收方
# 接收方收到消息和签名后,使用公钥对签名进行解密
hash_check = rsa.verify(hash.encode('utf-8'), signature, pubkey)
# 接收方计算收到消息的哈希值
hash_recv = hashlib.sha256(message.encode('utf-8')).hexdigest()
# 验证签名是否有效
if hash_check == hash_recv.encode('utf-8'):
print('Signature is valid')
else:
print('Signature is invalid')
```
在上述代码中,首先使用RSA算法生成密钥对。然后,计算待签名消息的哈希值,并使用私钥对其进行加密,得到签名。接着,将消息和签名一起发送给接收方。接收方收到消息和签名后,使用公钥对签名进行解密,得到解密值,然后计算收到消息的哈希值,并验证签名是否有效。如果签名有效,则认为消息是可信的。
阅读全文