`
cppmule
  • 浏览: 447399 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

python下RSA加密解密以及跨平台问题

 
阅读更多

项目合作需要,和其他网站通信,消息内容采用RSA加密方式传递。之前没有接触过RSA,于是两个问题出现了:

声明: 环境WIN 7 + python 2.6.6 RSA格式:PEM

一、Python下RSA加密解密怎么做? 现在网上搜索关于RSA的信息,然后看一下Python下是怎么做的。

找到两种方法:

1、使用rsa库 安装

pip install rsa

可以生成RSA公钥和密钥,也可以load一个.pem文件进来。

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

 

2、使用M2Crypto python关于RSA的库还是蛮多的,当然也可以直接用openSSL。M2Crypto安装的时候比较麻烦,虽然官网有exe的安装文件,但是2.6的有bug,建议使用0.19.1版本,最新的0.21.1有问题。

复制代码
 1 # -*- coding: utf-8 -*-
 2 __author__ = 'luchanghong'
 3 from M2Crypto import RSA,BIO
 4 
 5 rsa = RSA.gen_key(1024, 3, lambda *agr:None)
 6 pub_bio = BIO.MemoryBuffer()
 7 priv_bio = BIO.MemoryBuffer()
 8 
 9 rsa.save_pub_key_bio(pub_bio)
10 rsa.save_key_bio(priv_bio, None)
11 
12 pub_key = RSA.load_pub_key_bio(pub_bio)
13 priv_key = RSA.load_key_bio(priv_bio)
14 
15 message = 'i am luchanghong'
16 
17 encrypted = pub_key.public_encrypt(message, RSA.pkcs1_padding)
18 decrypted = priv_key.private_decrypt(encrypted, RSA.pkcs1_padding)
19 
20 print decrypted
复制代码

 

用法差不多一致。load密钥的方式也有好几种。 二、跨平台密钥不统一 RSA加密验证搞定了,但是和java平台交互的时候出问题,java生成的密钥用Python根本load不了,更别说加密了,反之Java也load不了Python生成的密钥。 上网查找原因,RSA认真流程肯定没有问题,关键是不同平台执行RSA的标准有些偏差。  

分享到:
评论

相关推荐

    基于python的信息加密解密网站设计与实现.docx

    Python的优点是易于使用、灵活性强、跨平台等特点,非常适合开发信息加密解密系统。Python提供了多种加密解密算法,可以满足不同用户的需求。 三、MySql数据库在信息加密解密系统中的应用 MySql数据库是常用的关系...

    rsa.zip_QT RSA加密算法_Qt rsa加密_qt rsa加密步骤_rsa_rsa算法 qt

    Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的库支持来创建桌面和移动应用。在本项目中,"rsa.zip_QT RSA加密算法_Qt rsa加密_qt rsa加密步骤_rsa_rsa算法 qt",开发者已经实现了RSA加密算法,...

    Rsa 私钥加密 公钥解密

    通常,密钥会以PEM或DER格式存储,这些格式是跨平台兼容的。你需要确保在JAVA、C#和PHP中正确解析和生成这些格式的密钥。 总结来说,RSA私钥加密和公钥解密是一种强大的加密机制,它可以提供安全的数据传输。在JAVA...

    Python-常见的编码解码以及加密解密

    在Python编程语言中,编码和解码是处理字符串与字节之间转换的关键操作,而加密解密则涉及数据安全和隐私保护。这篇文章将深入探讨Python中的这些重要概念。 首先,让我们了解一下编码和解码。在计算机中,文本是以...

    基于python的信息加密解密网站源码数据库论文.doc

    总结,基于Python的信息加密解密网站结合了强大的Python加密库和MySQL数据库,为用户提供了一个安全、便捷的平台来保护个人信息。通过精心设计的用户界面和严谨的后端逻辑,以及对安全性的多维度考量,该系统不仅...

    基于python的信息加密解密网站源码数据库.doc

    4. **跨平台性**:Python支持多种操作系统,如Windows、Linux等。 同时,MySQL被选作数据库管理系统,主要因为它具有以下几个特点: 1. **成熟稳定**:MySQL是一款成熟的数据库管理系统,性能稳定可靠。 2. **安全...

    PGP加密解密技术初探与实践

    PGP因其开源、跨平台、安全算法等特性,在全球范围内广泛应用,尤其是在金融、制药、健康、能源、航天防御和电信等领域。它的广泛应用表明了其在保护信息安全方面的可靠性。 综上所述,PGP加密解密技术结合了公钥和...

    基于python+django的信息加密解密网站的实现.zip

    在这个基于Python+Django的信息加密解密网站的实现项目中,开发者使用了现代Web开发的常见技术和工具,构建了一个能够处理敏感数据的安全平台。以下是该项目的关键知识点和详细说明: 1. **Python编程语言**:...

    基于Python3.8.2+PyQt5 5.14.2开发的跨平台(MacOS、Windows、Linux)的简单文件加解密工具

    综上所述,这个"File-encryption-and-decryption-tools-master"项目展示了如何利用Python3和PyQt5构建一个功能齐全、跨平台的文件加解密工具,涵盖了编程语言、GUI框架、加密算法、文件操作、跨平台开发等多个重要...

    开发通用工具 加密解密 post get请求等等

    综上所述,开发通用工具涉及到的核心技术包括加密解密算法、HTTP请求方法的使用以及模块化和跨平台的设计原则。掌握这些技能对于提升开发效率和代码质量至关重要。同时,提供易于调试的版本也有助于问题的快速解决。...

    密码学课程设计,python写的即时加密通讯软件

    Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的控件和组件,使得开发者可以方便地构建美观且功能齐全的界面。通过Python的PyQt或PySide模块,我们可以利用Python的简洁语法和Qt的强大功能。 点...

    RSA.rar_rsa通信_socket rsa

    总的来说,这个压缩包文件提供了学习如何将强大的RSA加密技术应用于网络通信的一个宝贵资源。通过理解并实践其中的内容,开发者能够提升其在网络通信安全领域的技能,为实现更安全的分布式系统打下基础。

    pgpy文件加解密工具(自己写的).rar

    Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动设备和Web应用。PyQT使得开发者可以利用Python的简洁性和Qt的丰富功能,快速构建图形用户界面(GUI)应用。在这个场景中,PyQT可能被用来设计一个用户友好的...

    ES加解密(高效纯E版)

    纯E版可能意味着不依赖任何外部库,所有功能都内置于系统内部,这可以提高性能,减少依赖性问题,但同时也可能限制了其跨平台的能力。 5. **数据转换.ec**:这个文件可能是一个数据转换工具或库,用于在加密前后的...

    Python-AN2Linux通过tcp或蓝牙将android通知加密同步到linux桌面

    Python-AN2Linux项目是一个创新的解决...通过以上介绍,我们可以看到Python-AN2Linux项目涵盖了网络编程、加密安全、移动与桌面平台的交互等多个IT领域的核心技术,为用户提供了一种高效、安全的跨平台通知同步方案。

    Python库 | pycryptodome-3.8.0-cp34-cp34m-manylinux1_x86_64.whl

    同时,它的高效性和纯Python实现也使其在性能和跨平台性上具有优势。 总之,pycryptodome是Python开发者手中的一把利剑,能够帮助我们构建安全的应用程序,处理敏感信息。通过安装并熟悉这个库,开发者可以在Python...

    开密解密动态库文件

    “封装成标准dll”表示这个加密解密功能已经打包成一个跨平台、跨语言可用的库。DLL是一种共享库,可以在多个应用程序之间重用代码,减少了资源占用和开发时间。这使得使用不同开发环境(如C#、Java、Python等)的...

    基于Python3.8.2+PyQt5 5.14开发的跨平台(MacOS、Windows、Linux)的简单文件加解密工具

    采用RSA非对称加密算法,使用公钥加密私钥解密。 【探索人工智能的宝藏之地】 无论您是计算机相关专业的在校学生、老师,还是企业界的探索者,这个项目都是为您量身打造的。无论您是初入此领域的小白,还是寻求更高...

    密码学大作业.zip

    PyQt5是一个强大的Python库,用于创建跨平台的GUI应用。在这个项目中,它被用来设计和实现交互式的RSA加密工具。开发者可能使用QWidgets如QPushButton(按钮)、QLineEdit(输入框)和QTextEdit(文本编辑器)等来...

    Delphi_d7+加密算法大全

    这使得跨平台的项目协作和代码重用成为可能。 在实际应用中,加密算法的选择和使用应根据具体需求和安全性要求。例如,HTTPs通信中的TLS/SSL协议就涉及了上述多种加密技术,包括证书验证、密钥交换和数据加密等步骤...

Global site tag (gtag.js) - Google Analytics