http://wawehi.blog.163.com/blog/static/143780306201371361120515/
网上一搜一大把的 python rsa 相关的东西,python本身的rsa 库也有好几个,参考这个页面:http://blog.csdn.net/shanliangliuxing/article/details/8722134,我尝试了其中的好些个,最终选定了 PyCrypto,没办法,M2Crypto在我的苹果系统没装好,装上后会报一个错,no module __m2crypto 之类的,总之很折腾。
PyCrypto装起来就简单多了,我是直接 sudo easy_install pycrypto 直接搞定的
先生成rsa的公私钥:
打开控制台,输入 openssl
再输入 genrsa -out private.pem 1024 来生成私钥
接着输入 rsa -in private.pem -pubout -out public.pem 来生成公钥
$ cat private.pem
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDKoeRzRVf8WoRSDYYqUzThpYCr90jfdFwTSXHJ526K8C6TEwdT
UA+CFPQPRUg9jrYgFcown+J2myzO8BRLynD+XHb9ilLb49Mqk2CvDt/yK32lgHv3
QVx14Dpb6h8isjncSF965fxBxlHGbvPwnHkJ9etRIYdYV3QpYohFszH3wQIDAQAB
AoGAFhKqkw/ztK6biWClw8iKkyX3LURjsMu5F/TBK3BFb2cYe7bv7lhjSBVGPL+c
TfBU0IvvGXrhLXBb4jLu0w67Xhggwwfc86vlZ8eLcrmYVat7N6amiBmYsw20GViU
UFmePbo1G2BXqMA43JxqbIQwOLZ03zdw6GHj6EVlx369IAECQQD4K2R3K8ah50Yz
LhF7zbYPIPGbHw+crP13THiYIYkHKJWsQDr8SXoNQ96TQsInTXUAmF2gzs/AwdQg
gjIJ/dmBAkEA0QarqdWXZYbse1XIrQgBYTdVH9fNyLs1e1sBmNxlo4QMm/Le5a5L
XenorEjnpjw5YpEJFDS4ijUI3dSzylC+QQJARqcD6TGbUUioobWB4L9GD7SPVFxZ
c3+EgcxRoO4bNuCFDA8VO/InP1ONMFuXLt1MbCj0ru1yFCyamc63NEUDAQJBALt7
PjGgsKCRuj6NnOcGDSbDWIitKZhnwfqYkAApfsiBQkYGO0LLaDIeAWG2KoCB9/6e
lAQZnYPpOcCubWyDq4ECQQCrRDf0gVjPtipnPPS/sGN8m1Ds4znDDChhRlw74MI5
FydvHFumChPe1Dj2I/BWeG1gA4ymXV1tE9phskV3XZfq
-----END RSA PRIVATE KEY-----
$ cat public.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKoeRzRVf8WoRSDYYqUzThpYCr
90jfdFwTSXHJ526K8C6TEwdTUA+CFPQPRUg9jrYgFcown+J2myzO8BRLynD+XHb9
ilLb49Mqk2CvDt/yK32lgHv3QVx14Dpb6h8isjncSF965fxBxlHGbvPwnHkJ9etR
IYdYV3QpYohFszH3wQIDAQAB
-----END PUBLIC KEY-----
将 公私钥的内容分别复制到代码里面,如下所示
#!/usr/bin/env python2.7
#coding:utf-8
import cgi, base64
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA
#私钥文件
priKey = '''-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDKoeRzRVf8WoRSDYYqUzThpYCr90jfdFwTSXHJ526K8C6TEwdT
UA+CFPQPRUg9jrYgFcown+J2myzO8BRLynD+XHb9ilLb49Mqk2CvDt/yK32lgHv3
QVx14Dpb6h8isjncSF965fxBxlHGbvPwnHkJ9etRIYdYV3QpYohFszH3wQIDAQAB
AoGAFhKqkw/ztK6biWClw8iKkyX3LURjsMu5F/TBK3BFb2cYe7bv7lhjSBVGPL+c
TfBU0IvvGXrhLXBb4jLu0w67Xhggwwfc86vlZ8eLcrmYVat7N6amiBmYsw20GViU
UFmePbo1G2BXqMA43JxqbIQwOLZ03zdw6GHj6EVlx369IAECQQD4K2R3K8ah50Yz
LhF7zbYPIPGbHw+crP13THiYIYkHKJWsQDr8SXoNQ96TQsInTXUAmF2gzs/AwdQg
gjIJ/dmBAkEA0QarqdWXZYbse1XIrQgBYTdVH9fNyLs1e1sBmNxlo4QMm/Le5a5L
XenorEjnpjw5YpEJFDS4ijUI3dSzylC+QQJARqcD6TGbUUioobWB4L9GD7SPVFxZ
c3+EgcxRoO4bNuCFDA8VO/InP1ONMFuXLt1MbCj0ru1yFCyamc63NEUDAQJBALt7
PjGgsKCRuj6NnOcGDSbDWIitKZhnwfqYkAApfsiBQkYGO0LLaDIeAWG2KoCB9/6e
lAQZnYPpOcCubWyDq4ECQQCrRDf0gVjPtipnPPS/sGN8m1Ds4znDDChhRlw74MI5
FydvHFumChPe1Dj2I/BWeG1gA4ymXV1tE9phskV3XZfq
-----END RSA PRIVATE KEY-----'''
#公钥文件
pubKey = '''-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKoeRzRVf8WoRSDYYqUzThpYCr
90jfdFwTSXHJ526K8C6TEwdTUA+CFPQPRUg9jrYgFcown+J2myzO8BRLynD+XHb9
ilLb49Mqk2CvDt/yK32lgHv3QVx14Dpb6h8isjncSF965fxBxlHGbvPwnHkJ9etR
IYdYV3QpYohFszH3wQIDAQAB
-----END PUBLIC KEY-----'''
'''*RSA签名
* data待签名数据
* 签名用商户私钥,必须是没有经过pkcs8转换的私钥
* 最后的签名,需要用base64编码
* return Sign签名
'''
def sign(data):
key = RSA.importKey(priKey)
h = SHA.new(data)
signer = PKCS1_v1_5.new(key)
signature = signer.sign(h)
return base64.b64encode(signature)
'''*RSA验签
* data待签名数据
* signature需要验签的签名
* 验签用支付宝公钥
* return 验签是否通过 bool值
'''
def verify(data, signature):
key = RSA.importKey(pubKey)
h = SHA.new(data)
verifier = PKCS1_v1_5.new(key)
if verifier.verify(h, base64.b64decode(signature)):
return True
return False
raw_data = 'partner="2088701924089318"&seller="774653@qq.com"&out_trade_no="123000"&subject="123456"&body="2010新款NIKE 耐克902第三代板鞋 耐克男女鞋 386201 白红"&total_fee="0.01"¬ify_url="http://notify.java.jpxx.org/index.jsp"'
sign_data = sign(raw_data)
print "sign_data: ", sign_data
print verify(raw_data, sign_data)
结果如下所示:
sign_data: JtjYneLH5YWXiPtBImSPKzfrE92U9iGmdjCIlmTuCUjhFyRxuX7UxC1WbZuinv6/SWMCACbzjt5L5pQ5pPC6JLlWYbF/j8LeWybl7hgqfsMrSkkmqiEaW3SsPnd+1Aa4lotX40GfXeAOOPMxdts+O8rYqKm3ZjxIa2zPKzpB8xU=
True
Over.
分享到:
相关推荐
PyCrypto库提供了一整套加密工具,包括AES、DES、Blowfish等对称加密算法,RSA、DSA等非对称加密算法,以及MD5、SHA系列的哈希函数。这些功能使得开发者能够在Python环境中方便地实现数据的安全传输、存储和验证。 ...
Paramiko依赖于PyCrypto库,这是一个强大的加密库,提供了多种加密算法,如RSA、AES等,为SSH协议的安全通信提供了基础。在安装Paramiko之前,必须确保Python环境已经安装了PyCrypto。通常,你可以使用pip来安装这两...
它基于PyCrypto库,提供安全的网络通信服务,包括加密的shell、文件传输以及密钥交换等功能。 PyCrypto的核心组件包括: 1. **AES(高级加密标准)**:AES是一种广泛使用的对称加密算法,具有高速度和高安全性。...
通过这种方式,开发者可以在Python 3.5环境中快速安装并使用PyCrypto库,从而在项目中实现安全的数据加密、解密、签名和验证等功能。无论是开发安全通信协议,还是保护存储的数据,PyCrypto都是Python开发者的重要...
2. pycrypto-2.5.tar.gz:这是一个包含PyCrypto库的源代码压缩包,版本为2.5。PyCrypto是Python中常用的密码学库,它包含了各种加密算法,如AES、DES、RSA等,以及杂凑函数、数字签名等功能。 3. M2Crypto-0.21.1....
在Python编程中,PyCrypto库是处理加密任务的关键工具。它支持常见的密码学算法,如AES(高级加密标准)、DES、3DES、RSA、DSA以及各种哈希函数如MD5、SHA1、SHA256等。这些功能使得PyCrypto成为开发安全应用程序的...
Python中的Pycrypto库是一个广泛使用的密码学工具包,它为开发者提供了多种加密算法,包括著名的RSA加密算法。RSA是一种非对称加密算法,它的安全性基于大整数因子分解的困难性,使得加密和解密过程使用不同的密钥,...
通过这种方式,我们避免了安装VC 14.0编译器的麻烦,同时确保了PyCrypto库在Python3.8和Windows7环境下的正确运行。需要注意的是,尽管whl文件提供了一种便捷的安装方式,但也要确保来源可靠,以防止潜在的安全风险...
PyCrypto库是Python中一个强大的加密工具包,它包含了多种加密算法,如AES(高级加密标准)、RSA(公钥加密算法)、DES(数据加密标准)、MD5(消息摘要算法5)和SHA系列(安全散列算法)等。这些算法在网络安全、...
《Python的PyCrypto库在Python 3.6环境下的安装与使用详解》 PyCrypto是Python编程语言中广泛使用的加密库,它提供了大量的密码学算法和协议,包括对称加密、非对称加密、哈希函数、消息认证码(MAC)等。在Python ...
PyCrypto是Python编程语言中广泛使用的加密库,它提供了各种加密算法和协议,包括AES、RSA、DES、Blowfish等。在本文中,我们将深入探讨PyCrypto 2.6.1版本,特别是针对Python3.6环境的WHL包,以及如何在不同系统...
PyCrypto库是Python的一个重要模块,它提供了丰富的密码学算法,如AES、RSA、DES等,为开发者提供了强大的加密功能。本文将围绕“pycrypto python3.6 whl最新”这一主题,详细阐述如何在Python 3.6环境中通过.whl...
PyCrypto是一个强大的Python加密库,它提供了多种加密算法,如AES和RSA。在Python项目开发中,使用PyCrypto可以实现高效且安全的数据保护。 首先,我们来看通用加密系统,主要是对称加密,其中AES(Advanced ...
Python 可以轻松地实现 RSA 加密算法,提供了相关的库和模块,例如 PyCrypto 和 cryptography 等。这些库提供了 RSA 加密算法的实现,能够帮助开发者快速地实现加密和解密操作。 基于 Python 的 RSA 加密算法软件...
《Python中的pyCrypto库与SSH连接详解》 pyCrypto是一个广泛使用的Python加密模块,它包含了各种加密算法,如AES、RSA、DES等,为开发者提供了强大的加密能力。在标题"pycrypto-2.5.tar.gz"中,我们看到的是...
本文将详细介绍Pycrypto库,并提供在Windows环境下,针对Python3.5版本的安装步骤。 Pycrypto库的核心功能: 1. **对称加密**:Pycrypto支持多种对称加密算法,如AES(高级加密标准)、DES(数据加密标准)和Blow...
安装完成后,PyCrypto库就可以在你的Python环境中使用了。现在,我们来看看如何利用PyCrypto库进行基础的加密操作。 1. 导入PyCrypto库:`import Crypto` Crypto库是PyCrypto的主模块,包含了所有加密相关的子模块...
描述中的内容重复了标题,意味着我们关注的是这个特定的平台和Python版本的PyCrypto库。 PyCrypto的核心在于它提供了一种简单的方式来实现加密和解密操作,这对于数据保护、网络安全以及数字签名等方面的应用至关...
在 python 中实现 RSA 加密算法需要使用相关的库和模块,例如 PyCrypto 库和 gmpy2 库。这些库提供了加密和解密的函数,可以方便地实现 RSA 加密算法。 本文还介绍了 RSA 加密算法在实际应用中的重要性,例如在电子...