python实现数字签名
时间: 2023-12-04 18:04:38 浏览: 72
Python中可以通过使用cryptography库来实现数字签名。以下是一个简单的示例代码:
```python
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives.asymmetric import rsa
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
# 要签名的数据
data = b"Hello World!"
# 使用SHA-256哈希算法计算数据摘要
digest = hashes.Hash(hashes.SHA256())
digest.update(data)
hash_value = digest.finalize()
# 使用私钥对数据摘要进行签名
signature = private_key.sign(
hash_value,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
# 使用公钥对签名进行验证
try:
public_key.verify(
signature,
hash_value,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
print("Signature is valid.")
except:
print("Signature is invalid.")
```
该代码首先生成一个RSA密钥对,然后计算数据摘要并使用私钥对其进行签名。最后,使用公钥对签名进行验证。
阅读全文