当前位置: 首页 > java >正文

Python RSA加解密脚本

基本概念

RSA是一种非对称性加密方式。非对称加密有两个钥匙,即公钥(Public Key)和私钥(Private Key)。公钥和私钥是成对的存在,如果对 原文 使用 公钥加密 ,则只能使用 对应的私钥 才能 解密 ;因为加密和解密使用的不是同一把密钥,所以这种算法称之为非对称加密算法。公钥用于加密数据,是公开的,all users可见。私钥用于解密数据,是私有的。

在线工具

RSA在线工具密钥对生成:https://www.lddgo.net/encrypt/rsakey
RSA在线工具生成密钥对

加解密脚本

# -*- 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)
http://www.xdnf.cn/news/8229.html

相关文章:

  • AI相关的笔记
  • (第93天)OGG 搭建 Oracle 19C 数据同步 - 远程部署
  • 博奥龙Nanoantibody系列IP专用抗体
  • ubuntu安装blender并配置应用程序图标
  • HW云RDS性能压测
  • C++中的菱形继承问题
  • 5.22学习日记 ssh远程加密、非对称加密、对称加密与中间人攻击的原理
  • Linux安装SRILM
  • 【Android开发——Activity简述】
  • Femap许可证兼容性问题
  • 同城上门预约服务系统案例分享,上门服务到家系统都有什么功能?这个功能,很重要!
  • 科学养生指南:解锁健康生活密码
  • 一个简易的图片与文件从同一个入口上传
  • 【数据结构】链式二叉树
  • 物理定律的数学结构基础及AI推理
  • [欠拟合过拟合]机器学习-part10
  • Java:希尔排序
  • 15.集合框架的学习
  • Unity基础学习(六)Mono中的重要内容(2)协同程序
  • 无人机桥梁检测效率问题-高精度3D建模及航线规划
  • AI智能分析网关V4车辆违停检测算法在道路/停车场/消防通道等场景应用解决方案
  • GitHub 趋势日报 (2025年05月21日)
  • 3D打印零件也能加密授权?戴姆勒和威步打造工业3D打印新范式
  • labview实现登录系统
  • Seay代码审计工具
  • centos8安装 kvm
  • jq常用命令
  • 线性Wi-Fi FEM被卷死,非线性FEM是未来?
  • CentOS安装最新Elasticsearch8支持向量数据库
  • 面向复杂和不平衡数据的双模块深度学习网络入侵检测模型