Python RSA加解密脚本
基本概念
RSA是一种非对称性加密方式。非对称加密有两个钥匙,即公钥(Public Key)和私钥(Private Key)。公钥和私钥是成对的存在,如果对 原文 使用 公钥加密 ,则只能使用 对应的私钥 才能 解密 ;因为加密和解密使用的不是同一把密钥,所以这种算法称之为非对称加密算法。公钥用于加密数据,是公开的,all users可见。私钥用于解密数据,是私有的。
在线工具
RSA在线工具密钥对生成:https://www.lddgo.net/encrypt/rsakey
加解密脚本
# -*- coding:utf-8 -*-
# @File:test_RSA_encrypt_decrypt.py
# @Date:2025/5/21 23:25
# @Author:wayne
# @description: RSA的加解密
import base64from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as PCKS1_cipherpub_str = '''-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJGnY4qHg/hPWahpkh1WkoSOtkgst/uS
BDY1mB4PJMfAsDL/aHBk9mQjbrjUf/0ArXf3BuGtuozZHYMtnHoxoG0CAwEAAQ==
-----END PUBLIC KEY-----'''pri_str = '''-----BEGIN RSA PRIVATE KEY-----
MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAkadjioeD+E9ZqGmS
HVaShI62SCy3+5IENjWYHg8kx8CwMv9ocGT2ZCNuuNR//QCtd/cG4a26jNkdgy2c
ejGgbQIDAQABAkBz1lUjAh2hqLHcb4GGFajXBYzQn8f+qiTxW/RLy61rsojKaJMP
+qczp3fdgJx/er/8bCs6pwMohBW+z+an5yb9AiEA7C0HGfl/HsJZjJzJcGZJ1lwC
ZUxG2zXu5PWauBdLE58CIQCd4Tbb40FNHLgNKQg8l/1ypUAIFy+gi+GFZrMoy/Yw
cwIgDR0m8stGwrd573PZP5N+cBelzmgg2xUwkagNkkFA2vMCIFujlcwcJJM10D8T
SgyhzCL3eCs6ChMOHmDoM6XCfauxAiA4CkQQJjPBEZGq1EAC7MZr4qhXBtMIlOUL
JNfMrJ8TMA==
-----END RSA PRIVATE KEY-----'''class RSAEncryptDecrypt:def __init__(self):self.pub_key = RSA.importKey(pub_str)self.pri_key = RSA.importKey(pri_str)def encrypt_text(self, text):"""RSA加密,步骤:1. 使用公钥创建一个PCKS1_cipher对象,用于后续的加密操作2. 使用创建的加密器对传入的文本进行加密,并将加密后的文本转化为base64的字节码3. 将base64的字节码解码为utf-8的字符串并返回:param text: 原始文本:return: RSA加密后的字符串"""cipher_encrypt = PCKS1_cipher.new(self.pub_key)encrypt_text = base64.b64encode(cipher_encrypt.encrypt(text.encode("utf-8")))return encrypt_text.decode("utf-8")def decrypt_text(self, text):"""RSA解密,步骤:1. 使用私钥创建一个PCKS1_cipher对象,用于后续解密操作2. 对传入的base64解码后的text文本,转化为字节码,并解密3. 将结果转化为utf-8字符串并返回:param text: RSA加密后的文本:return: 解密后的字符串"""cipher_decrypt = PCKS1_cipher.new(self.pri_key)decrypt_text = cipher_decrypt.decrypt(base64.b64decode(text.encode("utf-8")), 0)return decrypt_text.decode("utf-8")if __name__ == '__main__':pwd = "123456"encrypt_pwd = RSAEncryptDecrypt().encrypt_text(pwd)print("加密后:", encrypt_pwd)decrypt_pws = RSAEncryptDecrypt().decrypt_text(encrypt_pwd)print("解密后:", decrypt_pws)