ElGamal加密解密算法源代码
时间: 2023-07-10 12:22:41 浏览: 117
ElGamal算法原理与实现_密码学源代码_C语言程序_C++程序源代码
5星 · 资源好评率100%
以下是ElGamal加密解密算法的Python源代码实现:
```python
from Crypto.Util import number
# 生成大素数
p = number.getPrime(1024)
# 选择生成元g
g = 2
# 选择私钥
x = number.getRandomRange(2, p-2)
# 计算公钥
y = pow(g, x, p)
# 加密
def encrypt(msg, y, g, p):
k = number.getRandomRange(2, p-2)
a = pow(g, k, p)
b = (msg * pow(y, k, p)) % p
return (a, b)
# 解密
def decrypt(c, x, p):
a, b = c
msg = (b * pow(a, p-1-x, p)) % p
return msg
```
其中,`number.getPrime()`函数用于生成指定位数的大素数,`number.getRandomRange()`函数用于生成指定范围内的随机数。
加密函数`encrypt()`接收明文、公钥y、生成元g、大素数p作为输入,返回密文(a,b)。
解密函数`decrypt()`接收密文(a,b)、私钥x、大素数p作为输入,返回明文。
需要注意的是,在实际应用中,需要对加密密钥进行保护,避免被攻击者获取。同时,需要对数据进行填充和认证,防止被篡改和重放攻击。
阅读全文