版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址

http://www.cnblogs.com/Colin-Cai/p/8013009.html

作者:窗户

QQ:6679072

E-mail:6679072@qq.com

使用RSA公钥解密,用openssl命令就是openssl rsautl -verify -in cipher_text -inkey public.pem -pubin -out clear_text,但其python网上还真没有找到有博文去写,只有hash的rsa解签名。

想了想原理,然后到rsa库的python代码里找了找,从verify的代码里提取了出来,又试验了试验,一切OK了。

代码如下:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

import sys

#rsa

from rsa import PublicKey, common, transform, core

def f(cipher, PUBLIC_KEY):

public_key = PublicKey.load_pkcs1(PUBLIC_KEY)

encrypted = transform.bytes2int(cipher)

decrypted = core.decrypt_int(encrypted, public_key.e, public_key.n)

text = transform.int2bytes(decrypted)

if len(text) > 0 and text[0] == '\x01':

pos = text.find('\x00')

if pos > 0:

return text[pos+1:]

else:

return None

fn = sys.stdin.readline()[:-1]

public_key = sys.stdin.readline()[:-1]

x = f(open(fn).read(), open(public_key).read())

print x

用shell验证如下:

$ openssl genrsa -out pri2048.pem 2048

Generating RSA private key, 2048 bit long modulus

..+++

..............................................+++

e is 65537 (0x10001)

$ openssl rsa -in pri2048.pem -out pub2048.pem -RSAPublicKey_out

writing RSA key

$ echo -n 'Just a test' >1.txt

$ openssl rsautl -sign -in 1.txt -inkey pri2048.pem -out 1.bin

$ { echo 1.bin; echo pub2048.pem; } | ./test_rsa.py

Just a test

一切OK,注意,公钥pem从私钥里析出必须用-RSAPublicKey_out,这样pem文件的第一行和最后一行为以下,这样rsa.PublicKey.load_pkcs1才会认识。

-----BEGIN RSA PUBLIC KEY-----

-----END RSA PUBLIC KEY-----

python rsa 公钥解密_python使用rsa库做公钥解密(网上别处找不到)相关推荐

  1. python rsa 公钥解密_python利用rsa库做公钥解密的方法教程

    前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...

  2. python实现rsa加密源代码_python实现RSA加密(解密)算法

    RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. 今天只有短的RSA钥匙才可能被强力方式解破.到2008年为止,世界上还没有任何可靠 ...

  3. python语言实现rsa公钥密码算法_python 实现 rsa 算法加解密密码

    python版本:2.7 需要用到的模块:pycrypto 模块下载地址:https://pypi.org/project/pycrypto/#files 私钥和公钥的准备: 在进行RSA加密前,我们 ...

  4. python实现非对称加密算法_Python使用rsa模块实现非对称加密与解密

    Python使用rsa模块实现非对称加密与解密 1.简单介绍: RSA加密算法是一种非对称加密算法 是由已知加密密钥推导出解密密钥在计算上是不可行的"密码体制.加密密钥(即公开密钥)PK是公 ...

  5. python实现rsa加密解密_python实现RSA加解密

    RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示所占用的位数,就是所谓的密钥长度. e和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质:再选 ...

  6. python requests下载图片_Python使用urllib库、requests库下载图片的方法比较

    我们知道,使用Python制作一个爬虫程序,requests库是一个不错的选择,requests发送网络请求非常简单,比较使用urllib库,使用requests库可以大大减少代码量,它还可以定制请求 ...

  7. python语言实现rsa公钥密码算法_python实现RSA算法

    文章最后更新时间为:2018年12月26日 23:07:29 RSA是一种公钥密码算法,其影响力我就不多说了,算法原理网上多的是,看了几篇,还是觉得阮一峰写的好懂. 要想实现RSA,其关键在于大数运算 ...

  8. python实现加密字符串_Python实现对字符串的加密解密方法示例

    本文实例讲述了Python实现对字符串的加密解密方法.分享给大家供大家参考,具体如下: 需求是是要将密码存在数据库里,所以要加密解密是可逆的,在数据库里不要有特殊字符,防止数据库备份和恢复中出错. 安 ...

  9. python image模块安装_python之PIL库(Image模块)

    PIL(Python Image Library)是python的第三方图像处理库,PIL的功能非常的强大,几乎被认定是Python的官方图像处理库了. 由于PIL仅支持到python2.7于是一群志 ...

最新文章

  1. Python科学计算扩展库NumPy之广播(Broadcast)
  2. JFace中的表格型树TableTreeViewer
  3. Codeforces Round #529 (Div. 3) F. Make It Connected(最小生成树)
  4. 用html制作广告图片切换效果,基于jquery实现图片广告轮换效果代码
  5. 监听器Listener
  6. commit 规范性提交
  7. 企业运维经典面试题汇总(5)
  8. Android 如何全局获取Context
  9. 全能文件恢复软件推荐
  10. mysql慢查询日志配置_MySQL 慢查询日志配置与简析
  11. usb扫描枪驱动下载 wince_常用扫描枪驱动
  12. CATIA V5汽车焊接夹具设计从基础到高级培训视频教程
  13. mysql 拼音查询_MySQL拼音首字母查询
  14. Ubuntu 12.04无法识别华为U8500
  15. 图片如何转为GIF?gif格式的图片怎么做?
  16. 亚马逊SP-API对接实践
  17. python:while 的无条件循环
  18. python爬虫入门案例day10:珠宝图片
  19. 统计学习方法学习梳理(一)统计学习的分类
  20. python绘制箱线图-python 中箱线图绘制

热门文章

  1. 从源码到可执行程序的步骤
  2. linux内核源码目录结构(2.6.35.7版本)
  3. C++远航之封装篇——析构函数
  4. 反射--Class获得
  5. JavaScript中本地对象、内置对象和宿主对象
  6. POJ 2395 Out of Hay
  7. vim粘贴板和系统粘贴板的共享(linux)
  8. IL应用之——用IL分析接口的本质
  9. [导入][转]sap学习手册二
  10. 接上电就工作的单片机