非对称加密算法实现数字签名 代码
时间: 2024-05-28 10:06:56 浏览: 194
非对称加密算法可以实现数字签名,常用的非对称加密算法有RSA、DSA等。数字签名的实现流程如下:
1. 用发送者的私钥对明文进行加密,得到密文,即数字签名。
2. 发送者将密文和明文一起发送给接收者。
3. 接收者用发送者的公钥对密文进行解密,得到数字签名。
4. 接收者对明文进行哈希处理,得到哈希值。
5. 接收者将步骤4得到的哈希值与步骤3得到的数字签名进行比对。如果哈希值相同,则说明数字签名是由发送者生成的,并且明文没有被篡改过。
以下是使用Python实现RSA数字签名的代码:
```python
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
# 生成RSA密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
# 签名
message = b'Hello, world!'
hash_obj = SHA256.new(message)
signer = PKCS1_v1_5.new(RSA.import_key(private_key))
signature = signer.sign(hash_obj)
# 验证签名
hash_obj = SHA256.new(message)
verifier = PKCS1_v1_5.new(RSA.import_key(public_key))
if verifier.verify(hash_obj, signature):
print('Signature is valid')
else:
print('Signature is invalid')
```
阅读全文