dsa 数字签名算法代码实现
时间: 2023-09-10 18:15:11 浏览: 42
数字签名算法包括了很多种,这里提供一种常用的 RSA 数字签名算法的代码实现。需要使用到 Python 的 cryptography 库。
```python
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes
# 生成 RSA 密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
# 对原始数据进行签名
message = b"Hello, world!"
signature = private_key.sign(
message,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
# 验证签名
try:
public_key.verify(
signature,
message,
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 密钥对,对原始数据进行签名并验证签名。需要注意的是,签名和验证时需要使用相同的散列算法和填充方式。这里使用的是 PSS 填充和 SHA256 散列算法。