elgamal公钥加密算法代码
时间: 2025-01-23 15:12:49 浏览: 34
ElGamal公钥加密算法是一种基于离散对数问题的公钥加密算法。它的安全性依赖于计算离散对数的困难性。以下是一个简单的ElGamal公钥加密算法的Python实现:
```python
import random
def mod_inverse(a, m):
def extended_gcd(aa, bb):
if aa == 0:
return (bb, 0, 1)
else:
g, y, x = extended_gcd(bb % aa, aa)
return (g, x - (bb // aa) * y, y)
g, x, _ = extended_gcd(a, m)
if g != 1:
raise Exception('Modular inverse does not exist')
else:
return x % m
def generate_key(q):
alpha = random.randint(2, q-2)
d = random.randint(1, q-2)
beta = pow(alpha, d, q)
return ((alpha, q, beta), d)
def encrypt(public_key, plaintext):
alpha, q, beta = public_key
k = random.randint(1, q-2)
s = pow(beta, k, q)
c1 = pow(alpha, k, q)
c2 = (s * plaintext) % q
return (c1, c2)
def decrypt(public_key, private_key, ciphertext):
alpha, q, beta = public_key
c1, c2 = ciphertext
s = pow(c1, private_key, q)
s_inverse = mod_inverse(s, q)
plaintext = (c2 * s_inverse) % q
return plaintext
# Example usage
q = 2579
public_key, private_key = generate_key(q)
plaintext = 1234
ciphertext = encrypt(public_key, plaintext)
decrypted_text = decrypt(public_key, private_key, ciphertext)
print(f"Public Key: {public_key}")
print(f"Private Key: {private_key}")
print(f"Plaintext: {plaintext}")
print(f"Ciphertext: {ciphertext}")
print(f"Decrypted Text: {decrypted_text}")
```
这个代码示例展示了ElGamal公钥加密算法的基本实现,包括密钥生成、加密和解密过程。
阅读全文
相关推荐


















