数字签名算法实现Python完整代码,包含用户输入,不需要额外安装库
时间: 2024-05-06 20:15:45 浏览: 87
数字签名算法
数字签名算法通常使用非对称加密算法,比如RSA算法。下面是一个使用Python实现数字签名的示例代码,其中包括用户输入和不需要额外安装库的部分:
```python
import random
# 生成RSA密钥对
def generate_key_pair(p, q):
n = p * q
phi = (p - 1) * (q - 1)
e = random.randrange(1, phi)
gcd = lambda a, b: a if not b else gcd(b, a % b)
while gcd(e, phi) != 1:
e = random.randrange(1, phi)
d = pow(e, -1, phi)
return ((e, n), (d, n))
# 数字签名
def sign(message, private_key):
d, n = private_key
signature = [pow(ord(char), d, n) for char in message]
return signature
# 验证数字签名
def verify(message, signature, public_key):
e, n = public_key
decrypted = [chr(pow(char, e, n)) for char in signature]
return ''.join(decrypted) == message
# 用户输入消息
message = input("请输入要签名的消息:")
# 生成RSA密钥对
p = 17
q = 19
private_key, public_key = generate_key_pair(p, q)
# 数字签名
signature = sign(message, private_key)
print("数字签名为:", signature)
# 验证数字签名
if verify(message, signature, public_key):
print("数字签名验证通过!")
else:
print("数字签名验证失败!")
```
在这个示例代码中,我们先让用户输入要签名的消息。然后使用RSA算法生成密钥对,其中p和q是两个质数。使用私钥对消息进行签名,生成数字签名。最后使用公钥验证数字签名是否正确。这个示例中使用了Python内置的pow函数来进行快速幂运算,实现了数字签名算法的功能。
阅读全文