Python实现RSA加解密

简介: 本文介绍如何使用Python的PyCryptodome库实现RSA加解密。内容包括安装依赖、生成密钥对、保存公私钥文件,以及封装加密、解密和公钥导出功能的类,并提供完整调用示例,适用于安全通信开发场景。(238字)

安装依赖

pip install pycryptodome

生成密钥

# 1. 生成密钥对
from Crypto.PublicKey import RSA

# 1. 生成密钥对
def generate_key_pair():
    key = RSA.generate(2048)
    private_key = key.export_key()
    public_key = key.publickey().export_key()
    return private_key, public_key

保存私钥公钥:

# 使用示例
if __name__ == "__main__":
    # 生成密钥对
    private_key, public_key = generate_key_pair()
    print(f"私钥: {private_key}")
    print(f"公钥: {public_key}")
    # 公钥私钥保存到本地
    with open("private_key.pem", "wb") as f:
        f.write(private_key)
    with open("public_key.pem", "wb") as f:
        f.write(public_key)

加解密封装

class RSAHelper:
    # 加载本地密钥
    def __init__(self, key_path):
        # 加载公钥和私钥
        self.private_key = RSA.import_key(open(key_path + '/private_key.pem').read())
        self.public_key = RSA.import_key(open(key_path + '/public_key.pem').read())

    # 加密
    def encrypt(self, message):
        cipher = PKCS1_v1_5.new(self.public_key)
        encrypted_message = cipher.encrypt(message.encode())
        return base64.b64encode(encrypted_message).decode()

    # 解密
    def decrypt(self, encrypted_message):
        sentinel = b"DECRYPTION_FAILED"
        cipher = PKCS1_v1_5.new(self.private_key)
        decrypted_message = cipher.decrypt(base64.b64decode(encrypted_message), sentinel)
        return decrypted_message.decode()

    # 获取公钥
    def get_public_key(self):
        # 公钥字符串
        return self.public_key.export_key().decode()

调用示例

if __name__ == "__main__":
    rsa_helper = RSAHelper("./")
    print(rsa_helper.get_public_key())
    encrypted = rsa_helper.encrypt("123456rterter345345")
    print(encrypted)
    print(rsa_helper.decrypt(encrypted))


相关文章
|
开发工具 git
IDEA中Git面板操作介绍 变基、合并、提取、拉取、签出
在IDEA的Git面板中,仓库会分为本地仓库和远程仓库,代码仓库里面放的是各个分支。
3666 2
|
4月前
|
Linux Go iOS开发
Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
本文详解Go语言打包与跨平台编译技巧,涵盖`go build`命令、多平台构建、二进制优化及资源嵌入(embed),助你将项目编译为无依赖的独立可执行文件,轻松实现高效分发与部署。
|
6月前
|
Python
decode函数
在 Python 中,decode() 是字符串或字节序列的方法,通常用于将字节数据(bytes)转换成字符串(str)类型。具体来说,它的作用是将字节序列按照指定的字符编码格式解码为字符串。
367 0
|
3月前
|
调度 Python
Python基于Fastapi与APScheduler的应用定时任务
基于FastAPI与APScheduler实现定时任务调度,通过lifespan管理生命周期,每分钟执行一次反馈任务,结合Uvicorn启动服务,构建高效异步任务处理系统。
258 3
|
4月前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
354 3
|
安全 Python
This environment is externally managed
【10月更文挑战第28天】This environment is externally managed
1300 1
|
人工智能 自然语言处理 安全
关于claude怎么下载?这篇文章告诉你答案!
Claude 是 Anthropic 公司开发的一款大型语言模型,被誉为下一代 AI 助手 🤖。它拥有强大的文本处理能力,能够进行对话、写作、翻译、总结等多种任务 📝。
|
存储 安全 数据库
双重防护,无懈可击!Python AES+RSA加密方案,构建最强数据安全堡垒
【8月更文挑战第3天】在数字时代,数据安全至关重要。Python AES+RSA加密方案提供了一种强大且可靠的数据保护方式。AES以高效安全著称,适用于大量数据的快速加密;RSA作为非对称加密技术,确保了密钥传输的安全性。二者结合形成“内外兼修”的加密策略:AES加密数据内容,RSA保护AES密钥,共同构建起数据安全的双重保险。通过示例代码展示了这一加密流程,强调了加密后密钥与密文的安全传输和存储的重要性。在实际应用中,应采用HTTPS等安全协议进行传输,并将数据安全存储于加密的数据库或文件系统中。
407 12
|
机器学习/深度学习 自然语言处理 算法
3大核心技术,免费开源的智能合同审查分析软件的技术介绍
智能法律文档分析系统基于BERT、GPT等模型,实现高精度的实体识别和关系抽取,准确率分别达95%和90%以上。系统支持跨文档关联分析和实时处理,响应时间小于1秒,显著提升文档处理效率。核心算法包括深度学习模型、关系抽取技术和多层次数据处理能力,适用于复杂的法律文书分析。
831 0
3大核心技术,免费开源的智能合同审查分析软件的技术介绍