Python实现RSA签名
时间: 2024-06-05 07:04:51 浏览: 209
Python可以通过PyCrypto库实现RSA签名。具体实现步骤如下:
1. 首先生成RSA密钥对,可以使用pycryptodome库中的Crypto.PublicKey.RSA模块来生成,代码如下:
```python
from Crypto.PublicKey import RSA
# 生成2048位的RSA密钥对
key = RSA.generate(2048)
# 获取私钥
private_key = key.export_key()
# 获取公钥
public_key = key.publickey().export_key()
```
2. 使用私钥对数据进行签名,可以使用pycryptodome库中的Crypto.Signature.PKCS1_v1_5模块,代码如下:
```python
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
# 加载私钥
private_key = RSA.import_key(private_key_data)
# 初始化签名器
signer = PKCS1_v1_5.new(private_key)
# 计算待签名数据的SHA256哈希值
hash_value = SHA256.new(data.encode('utf-8'))
# 对哈希值进行签名
signature = signer.sign(hash_value)
```
3. 使用公钥对签名进行验证,可以使用pycryptodome库中的Crypto.Signature.PKCS1_v1_5模块,代码如下:
```python
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
# 加载公钥
public_key = RSA.import_key(public_key_data)
# 初始化验证器
verifier = PKCS1_v1_5.new(public_key)
# 计算待签名数据的SHA256哈希值
hash_value = SHA256.new(data.encode('utf-8'))
# 对签名进行验证
is_valid = verifier.verify(hash_value, signature)
```
阅读全文