Python的rsa加密算法代码
作者:野牛程序员:2023-07-05 08:40:18python阅读 2814
以下是使用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加密算法代码