python实现数字签名
时间: 2023-09-14 08:14:01 浏览: 120
数字签名是用于验证数据完整性和身份验证的一种技术。在Python中,可以使用cryptography库实现数字签名。
首先,需要安装cryptography库。可以使用pip命令进行安装:
```
pip install cryptography
```
下面是一个示例代码,用于生成数字签名并验证签名。
```python
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding, rsa
from cryptography.hazmat.backends import default_backend
# 生成密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
public_key = private_key.public_key()
# 签名数据
data = b"Hello, world!"
signature = private_key.sign(
data,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
# 验证签名
try:
public_key.verify(
signature,
data,
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密钥对,然后对数据进行签名并生成签名。最后,使用公钥验证签名是否有效。如果签名有效,则输出“Signature is valid”,否则输出“Signature is invalid”。
阅读全文