Python的rsa加密算法代码
作者:野牛程序员:2023-07-05 08:40:18python阅读 2926
以下是使用Python编写的RSA加密算法代码示例:
import random
# 求解最大公约数
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
# 求解模反元素
def mod_inverse(a, m):
if gcd(a, m) != 1:
return None
u1, u2, u3 = 1, 0, a
v1, v2, v3 = 0, 1, m
while v3 != 0:
q = u3 // v3
v1, v2, v3, u1, u2, u3 = (u1 - q * v1), (u2 - q * v2), (u3 - q * v3), v1, v2, v3
return u1 % m
# 生成素数
def generate_prime_number(bit_length):
while True:
p = random.randint(2**(bit_length-1), 2**bit_length)
if is_prime(p):
return p
# 判断是否为素数
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
# RSA密钥生成
def generate_rsa_key(bit_length):
p = generate_prime_number(bit_length)
q = generate_prime_number(bit_length)
n = p * q
phi = (p - 1) * (q - 1)
while True:
e = random.randint(2, phi)
if gcd(e, phi) == 1:
break
d = mod_inverse(e, phi)
return ((e, n), (d, n))
# RSA加密
def rsa_encrypt(message, public_key):
e, n = public_key
encrypted_message = [pow(ord(char), e, n) for char in message]
return encrypted_message
# RSA解密
def rsa_decrypt(encrypted_message, private_key):
d, n = private_key
decrypted_message = ''.join([chr(pow(char, d, n)) for char in encrypted_message])
return decrypted_message
# 测试示例
bit_length = 1024
message = "Hello, RSA!"
# 生成密钥对
public_key, private_key = generate_rsa_key(bit_length)
# 加密消息
encrypted_message = rsa_encrypt(message, public_key)
# 解密消息
decrypted_message = rsa_decrypt(encrypted_message, private_key)
print("原始消息:", message)
print("加密后的消息:", encrypted_message)
print("解密后的消息:", decrypted_message)这个示例代码演示了如何使用Python实现RSA加密算法。代码中的generate_rsa_key函数用于生成RSA密钥对,rsa_encrypt函数用于加密消息,rsa_decrypt函数用于解密消息。在示例中,我们首先生成了一个1024位的RSA密钥对,然后使用公钥加密了消息"Hello, RSA!",最后使用私钥解密得到原始消息。请注意,RSA算法适用于加密较小长度的数据,因此在实际使用中可能需要根据需求调整密钥长度。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:des与rsa算法的区别
- 下一篇:C++rsa加密算法代码
