RSA(Rivest-Shamir-Adleman)加密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。RSA算法的安全性基于大整数分解的难度,使其成为加密通信和数字签名的重要工具。本文将详细介绍Python中的RSA加密,包括数字签名与密钥生成。
RSA算法的核心原理是利用两个大素数的乘积进行加密和解密。以下是RSA算法的主要步骤:
密钥生成:
加密:
解密:
Python提供了多种库来实现RSA加密,其中最常用的是Crypto库。以下是一个简单的RSA加密示例:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 生成密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
# 加密数据
cipher = PKCS1_OAEP.new(RSA.import_key(public_key))
encrypted_data = cipher.encrypt(b"Hello, World!")
# 解密数据
decrypted_data = cipher.decrypt(encrypted_data)
print(decrypted_data.decode())数字签名是确保数据完整性和身份验证的一种方法。以下是一个使用RSA进行数字签名的示例:
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
# 生成密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
# 创建消息哈希
hash_obj = SHA256.new(b"Hello, World!")
# 签名消息
signature = pkcs1_15.new(RSA.import_key(private_key)).sign(hash_obj)
# 验证签名
hash_obj = SHA256.new(b"Hello, World!")
pkcs1_15.new(RSA.import_key(public_key)).verify(hash_obj, signature)本文介绍了Python中的RSA加密,包括密钥生成、数据加密和解密,以及数字签名。通过本文的实践指南,您可以轻松入门并掌握RSA加密技术。在实际应用中,RSA加密广泛应用于保护通信和数据的安全性。