`
Xorcerer
  • 浏览: 35286 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于Python RSA简陋随笔(rsa,ezPyCrypto, M2Crypto)。

阅读更多
最近要跟公司的OAuth对接,所以简单地了解了一下RSA的相关模块用法。

rsa:
内置文档(rsa.__doc__)上明确说,这是教学用的模块。并不实用于生产环境。

ezPyCrypto:
官方网站:http://www.freenet.org.nz/ezPyCrypto/detail/index.html
基于pycrypto。
文档对于导入key没有太多的说明,直接看源码后,我悲剧的发现ezPyCrypto的importKey() 似乎是使用了它自己定义的格式。也就是说,如果你的key不是由ezPyCrypto的exportKey()得到的,那么你会在各种转换上花费很大的力气。

M2Crypto:
官网(http://chandlerproject.org/Projects/MeTooCrypto)无法访问。
源码来源,http://pypi.python.org/pypi/M2Crypto,在snow leopard上无法直接编译。
最后使用Macport安装。

使用M2Crypto.RSA.load_key()来生成M2Crypto.RSA.RSA的实例,注意,key pair其实就是私钥(private key),PEM格式(openssl默认输出格式)。
如果你只需要加密,可以考虑用load_pub_key,单独读入公钥(public key)。

加密数据需要通过某种编码变成单字节的数组。下面的例子使用了UTF-8 编码。

# -*- encoding: UTF-8 -*-
import M2Crypto as m2c

key = m2c.RSA.load_key('key1/id_rsa')

# encrypt something:
data = u'Mochi 麻球'.encode('UTF-8')
encrypted = key.public_encrypt(data, m2c.RSA.pkcs1_padding)

# and now decrypt it:
decrypted = key.private_decrypt(encrypted, m2c.RSA.pkcs1_padding)
print data == decrypted


注意  RSA.sign(self, digest, algo='sha1') 这个方法,虽然在最后的参数指定了hash方法,但是其实需要先在外面自行获得digest。

代码里面有一个padding参数,如果你对此感兴趣,可以参考:
http://tools.ietf.org/html/rfc3447

PKCS #1有两种padding的定义,我个人的理解RSA.pkcs1_padding对应是下面的一节:
http://tools.ietf.org/html/rfc3447#section-7.2.1

如果你不高兴看这些细节,只要记得编码和解码的时候,使用的参数一致即可。

See also:

http://www.amk.ca/python/code/crypto

里面提到一个yawPyCrypto,似乎不错。

有点简陋,这是在上班时候的边做边写的。计划在不忙的时候写一个rsa算法的浅析。
分享到:
评论

相关推荐

    与Java的RSA加解密兼容的Python加解密库m2crypto(Windows下免编译)

    由于Java的RSA加解密一般都是用RSA/ECB/PKCS1PADDING,导致Python一般的RSA加密库的加解密结果与Java的不兼容,Python下目前能与之兼容的RSA的库目前发现的只有一个,就是m2crypto。 这个库目前的问题是在windows...

    python rsa crypto

    M2Crypto是Python的一个扩展模块,提供了包括RSA在内的多种加密算法,同时也支持SSL/TLS协议。 2. pycrypto-2.5.tar.gz:这是一个包含PyCrypto库的源代码压缩包,版本为2.5。PyCrypto是Python中常用的密码学库,它...

    python实现RSA2签名解签.rar

    在给定的“python实现RSA2签名解签.rar”压缩包中,我们可以推断出它包含了关于如何在Python中使用RSA进行签名和验证签名的代码示例。 RSA2通常指的是使用SHA256哈希算法的RSA签名。SHA256是一种安全的哈希函数,...

    PYTHON Crypto库支持RSA,私钥加密公钥解密(修改版)

    PYTHON Crypto库支持RSA,私钥加密公钥解密, 文件名:RSA.PY 路径:Crypto\PublicKey\RSA.py 将此Crypto库中以上文件替换。 关于加解密方法看我的文章有写

    Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例

    ### Python3 加密解密库Crypto的RSA加解密与签名/验签实现方法实例 #### 一、引言 本篇文章重点介绍如何利用Python3中的`Crypto`库实现RSA算法的加密解密以及签名与验签功能。通过具体代码示例帮助读者理解并掌握...

    Python库 | rsa-4.0-py2.py3-none-any.whl

    Python库rsa-4.0-py2.py3-none-any.whl是用于Python编程的一个关键工具,它提供了RSA公钥加密算法的实现。RSA是一种非对称加密算法,广泛应用于网络安全领域,如数字签名、数据加密和密钥交换。在Python中,rsa库使...

    M2Crypto 安装包

    M2Crypto 是 Python 编程语言中的一款开源库,它为 Python 提供了对 OpenSSL 库的全面接口。这个模块由 Steve Henson 开发,旨在提供加密、签名、随机数生成、SSL 协议支持以及 X.509 证书管理等众多功能。M2Crypto ...

    python3实现RSA(非调用RSA库)

    **Python3实现RSA加密算法** RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,因其三位创始人Ron Rivest、Adi Shamir和Leonard Adleman的名字首字母命名。非对称加密算法的特点是公钥和私钥是成对出现的,一个...

    rsa共模攻击_rsa共模攻击_pythonrsa共模_rsa攻击方式_rsapython_rsa共模_

    **Python RSA库与共模攻击:** 在Python中,可以使用`pycryptodome`库实现RSA算法。在进行共模攻击时,需要编写代码来模拟加密过程,计算c1和c2,然后使用数论方法来解密。例如,`共模攻击1.py`、`共模攻击2-1.py`、...

    M2crypto-0.27.0.tar.gz

    M2Crypto库是Python对OpenSSL库的全面绑定,它提供了丰富的功能,包括但不限于RSA、DSA、DH、ECC等公钥密码算法,以及AES、Blowfish等对称加密算法。这个库在Python世界里被广泛使用,因为它的存在使得Python程序员...

    RSA.zip_Crypto++_crypto RSA_crypto rsa_rsa_rsa加密

    本篇文章将详细讲解RSA算法的基本原理、Crypto++库的使用以及如何利用Crypto++ v5.22实现RSA加密解密。 RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,其名字正是由他们姓氏首字母组合而成。RSA...

    python的RSA加解密

    Python的RSA加解密是一种广泛应用于网络安全中的加密技术,它基于数学难题的不可逆性,为数据提供了一种安全的传输方式。RSA算法是公钥密码体制的一种,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,...

    python rsa3.1.4源码包 免积分

    python rsa3.1.4 是用于进行python使用rsa加密算法模块的包。下载后使用Python命令进行安装即可

    (纯算法,没有调用库)python实现RSA数字签名代码、ppt、文档.rar

    在这个资源包中,包含的是使用Python纯算法实现RSA数字签名的代码、相关的PPT演示文稿以及文档,这些内容将帮助我们深入理解RSA数字签名的工作原理和实现过程。 1. **RSA算法基础** RSA算法基于大数因子分解的困难...

    在Python中使用 RSA算法进行 图像加密_Jupyter _python代码_下载

    使用 RSA 算法的图像加密:- RSA 是一种加密算法,用于加密和解密数据。在这里,我们在 IMAGE 上实现 RSA(非对称密钥加密)算法,以使用两个密钥(私钥和公钥)进行加密和解密。要了解有关图像上的 RSA 加密的更多...

    rsa.rar_Crypto++_c++RSA函数_crypto rsa

    标题中的"rsa.rar_Crypto++_c++RSA函数_crypto rsa"指的是一项使用Crypto++库在C++中实现RSA加密算法的项目。Crypto++是一个开源的C++类库,包含了各种密码学算法,如RSA、AES等。在这个项目中,开发者可能已经编写...

    M2Crypto使用的相关模块.zip

    《M2Crypto与Python加密库的深度探索》 在Python编程中,安全性和加密技术扮演着至关重要的角色,而M2Crypto就是其中的一款强大的加密库。M2Crypto是Python对OpenSSL库的全面封装,提供了丰富的加密算法和安全功能...

    M2Crypto:适用于Python的OpenSSL(2.x和3.x)(由SWIG生成)

    M2Crypto = Python + OpenSSL + SWIG M2Crypto是用于Python的加密和SSL工具包。 M2代表“我也是!” M2Crypto随附以下内容: RSA , DSA , DH , HMAC ,消息摘要,包括AES的对称密码, TLS功能可实现客户端和...

    python Django RSA 前台加密 后端解密。

    Python Django框架是一个强大的后端开发工具,而RSA(Rivest-Shamir-Adleman)则是一种广泛应用的非对称加密算法,常用于数据加密和数字签名。在这个场景中,我们将讨论如何在Django应用中实现RSA加密和解密,以便于...

    Python安装RSA模块

    Python中的RSA模块是一种用于加密和解密数据的库,它基于公开密钥加密算法RSA。RSA(Rivest–Shamir–Adleman)是由三位科学家命名的,是一种广泛应用于网络安全的非对称加密技术。在Python环境中,我们可以使用rsa...

Global site tag (gtag.js) - Google Analytics