首先使用rsa生成了公钥,然后将公钥(pubkey)n和e部分转成字符,又将字符转成公钥(pub),使用pubkey和pub进行加密后的结果(test1, test2)并不一样,求解。

>>> import rsa

>>> (pubkey, privkey) = rsa.newkeys(512, poolsize=8)

>>> pubkey.n

10818718420560739313346002978990665036149681542592492045226497373002401361706250920089394493353909096589940348075365896188466224763409423854599514284610391L

>>> pubkey.e

65537

>>> type(pubkey.e)

>>> type(pubkey.n)

>>> type(pubkey)

>>> n = str(pubkey.n)

>>> e = str(pubkey.e)

>>> n

'10818718420560739313346002978990665036149681542592492045226497373002401361706250920089394493353909096589940348075365896188466224763409423854599514284610391'

>>> e

'65537'

>>> message = 'test'

>>> pub = rsa.PublicKey(long(n), int(e))

>>> pub

PublicKey(10818718420560739313346002978990665036149681542592492045226497373002401361706250920089394493353909096589940348075365896188466224763409423854599514284610391, 65537)

>>> test1 = rsa.encrypt(message, pub)

>>> test2 = rsa.encrypt(message, pubkey)

>>> test1 == test2

False

>>> test1

"\xbbVcE\x1e\x1f\xa3\x84\x90]\x19\xbf5\xb9\x8aM\xed

>>> test2

'Z1\xf1\xbd\xe6}!\x11\x0c\xa2\xe2"lx\xb2\xa2\xdf\x15{\x95\xe6\x9aX\xbc)\xfb\xe4!\xf1"\xf0\xfc3y\xbb\x90\x92\x8e\x83\x0c\xbd\xc5\xf9\x0b\xdf\xdd\xd5\xbc\x0ey\x05\x055\xde\x9dh\xb0+\x0f\x8c\x88J\x98\xf1'

>>> pub == pubkey

True

>>> pub

PublicKey(10818718420560739313346002978990665036149681542592492045226497373002401361706250920089394493353909096589940348075365896188466224763409423854599514284610391, 65537)

>>> pubkey

PublicKey(10818718420560739313346002978990665036149681542592492045226497373002401361706250920089394493353909096589940348075365896188466224763409423854599514284610391, 65537)

>>> import chardet

>>> chardet.detect(test1)

{'confidence': 0.0, 'encoding': None}

>>> type(pub)

>>> type(pubkey)

>>> chardet.detect(test2)

{'confidence': 0.0, 'encoding': None}

>>>

解密结果是相同的

>>> rsa.decrypt(test1, privkey)

'test'

>>> rsa.decrypt(test2, privkey)

'test'

>>>

私钥解密:

>>> n = str(privkey.n)

>>> e = str(privkey.e)

>>> d = str(privkey.d)

>>> p = str(privkey.p)

>>> q = str(privkey.q)

>>> n

'10818718420560739313346002978990665036149681542592492045226497373002401361706250920089394493353909096589940348075365896188466224763409423854599514284610391'

>>> e

'65537'

>>> d

'8903648270921220617431832654452301896482433185548143048222170107118994148084511997041768437603762728926301730747011307923395996108348985220136737777676929'

>>> p

'6711170401751480754571255050059571447514931755192869446968529815316138668726356067'

>>> q

'1612046449861751533076589670955589879512068088293380286297803374041352573'

>>> pr = rsa.PrivateKey(long(n), int(e), long(d), long(p), long(q))

>>> pr

PrivateKey(10818718420560739313346002978990665036149681542592492045226497373002401361706250920089394493353909096589940348075365896188466224763409423854599514284610391, 65537, 8903648270921220617431832654452301896482433185548143048222170107118994148084511997041768437603762728926301730747011307923395996108348985220136737777676929, 6711170401751480754571255050059571447514931755192869446968529815316138668726356067, 1612046449861751533076589670955589879512068088293380286297803374041352573)

>>> pr = privkey

>>> pr = rsa.PrivateKey(long(n), int(e), long(d), long(p), long(q))

>>> pr == privkey

True

>>> rsa.decrypt(test1, pr)

'test'

>>> rsa.decrypt(test2, pr)

'test'

>>>

已采纳@依云的答案,滚回去看书了:

>>> rsa.encrypt(message, pub)

'\xcc\x11\xb5\x8dSM\xd0\x01l\r\xc1\xed]\x17U\xf9)\xbaC\xcf-\x07\xfd\xa6V\xdb.\x94\x8b\xb8\xb3M\x0cG\xa7v\xe3\x11\x9a\xa8\xffV\xefo\x92\xb8\xcd$+\x1f\x99q\x06\xa1E\xd0E\xe5\xaa\xea%\xb5\xf1\x93'

>>> rsa.encrypt(message, pub)

'0\x9a\xd7*+o\x9b\xd2\x92\t\x1bb\x9cY\xfc{\\\xa6\x98\xd3\xd0\xcd\xff\xd9\x94\xb4Pa\xeb8r(s\xfe\x17;\xe0\xbd\xfcs\xcc\xb7\xaau~\xba\n\xdb\xb2G\xb9\xd8\xe6K\x1fA\x8c\xb0{P)9\xd6\xa0'

>>> rsa.encrypt(message, pub)

'BV\xcf\xa1\x93\xb1\xe1\x91$\xbd\x01\x08T\xfc\x7f\xf1uvX\x8f"\xfd\x91\xe5*f\xbb\xec\xb2\x14\xe6ug\xc0`\xf0\xba\xf8|\xec\xad\x85\xeej~Ti*\xc5@I\\vl\xef.\x86S\xa4\xdbcTQ\xea'

>>> rsa.encrypt(message, pub)

'\xb4l0\x10\xb6\x8c\x83\x02\xdeTMC\x1fm\x19\xdb\x02\xa8\xc8\x05\xcb\xf4\xee\x919\xe34x\xaf\xa4\x98dc\xa6\t}\x14\xc4\x07\x0eU8\x08Dr\x0bo\x17\x18\x05j\x89\xc6]\xca\x16s\xd9\x92\x0bN\x95o\x9d'

>>> rsa.encrypt(message, pub)

'}.\x9f\xe5q\xee\xa3\xb91k\xb9\xb0\xa2zK%\x88\xdc\xb1\xd7i\xf3$4\x91\xa6\xd9\xd1-boS\xe0\x9b&\x0cv=\xa2\xe8\xc0\x07\x93\x80\xea\xf3\x06vN\xf8M\xe3\xa2\x0e\x16~\x85X\xab\xf2\x18\xd4\xf1\xd0'

>>> rsa.encrypt(message, pub)

"p\xd7\x82\nZz\xc6\x92\x85\xcb6

>>> rsa.encrypt(message, pub)

"Rw\xff\xb3\xf35\xe9\x80|\x90T\x03\xf4\xeb\xe2\x8fA\x84\x1cBm,\xc4\x99J^\xfc\xc5Q\ncl\t\x19\xc9W4'\xdf*\x8bN\x9c\xa8']\\\xa5D\x9b\xe1m}:\xba\x05\xb8Q\xe7\xaa\xafb\xaem"

>>>

python rsa_Python RSA 公钥加密结果不一致相关推荐

  1. python rsa加密一致_Python RSA 公钥加密结果不一致

    首先使用rsa生成了公钥,然后将公钥(pubkey)n和e部分转成字符,又将字符转成公钥(pub),使用pubkey和pub进行加密后的结果(test1, test2)并不一样,求解. >> ...

  2. python的rsa公钥解密方法

    示例: # -*- coding: UTF-8 -*- import M2Crypto import base64 #私钥加密,公钥解密 def pri_encrypt(msg, file_name) ...

  3. python rsa_python rsa加解密

    一. Rsa加密 import base64 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Ciph ...

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

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

  5. python rsa 公钥解密_python使用rsa库做公钥解密(网上别处找不到)

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/8013009.html 作者:窗户 Q ...

  6. python RSA 公钥解密方法

    背景 常见的RSA加解密使用方式是:公钥加密,私钥解密.私钥签名,公钥验签. 但我在项目上却遇到了一个用python解决公钥解密的问题.查了好多资料最后完成了这需求,记录一下. 解决 1.代码示例 i ...

  7. 为什么RSA公钥每次加密得到的结果都不一样?

    <<OpenSSL和Python实现RSA Key公钥加密私钥解密>>中提到,发现使用RSA公钥对同一数据加密,每次的结果都不一样.百度一下,很多人都有这个疑问,但并没有看到详 ...

  8. RSA公钥格式PKCS#1,PKCS#8互转(微信获取RSA加密公钥)

    /把RSA公钥格式PKCS#1转换成PKCS#8org.bouncycastle.asn1.pkcs.RSAPublicKey rsaPublicKey = org.bouncycastle.asn1 ...

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

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

最新文章

  1. 协程和任务 异步IO 重点
  2. 拼多多创始人黄峥,要彻底卸下担子,搞“科研”去了。
  3. 37.操作系统的信号量
  4. leetcode 组合总和
  5. Java中String类的常见面试题
  6. 【Python 自然语言处理 第二版】读书笔记1:语言处理与Python
  7. IPv6网络协议的安全疑云
  8. 记 QT 应用开发中的一个二进制兼容性问题
  9. Win10怎么禁用系统更新服务 Win10禁用系统更新服务教程
  10. python输入姓名 性别身高_python简单实现学生管理系统
  11. jQuery EasyUI/TopJUI创建树形表格下拉框
  12. 【图像检测】基于区域生长算法实现对焊接孔隙检测matlab代码
  13. 在vc++如何响应键盘和鼠标事件-visual c++
  14. DLP3010EVM-LC and DLP2010EVM-LC常见问题答疑
  15. Ureport2 ---报表设计(2)--报表计算模型
  16. 卡方分布、卡方独立性检验和拟合性检验理论及其python实现
  17. python爬虫-京东登录
  18. 为什么Flutter是跨平台开发的终极之选
  19. CSR8670 开始
  20. JAVA学习 11.10

热门文章

  1. Socket编程实践(11) --epoll原理与封装
  2. 第六章 图 学习小结
  3. 积累命令、用户、正则表达式
  4. 推断单向链表中是否有环和查找环的入口
  5. 网站XML格式的网站地图(sitemap)格式
  6. apache 禁止trace或track防止xss***
  7. Burpsuite如何抓取使用了SSL或TLS传输的 IOS App流量
  8. Hibernate Query数据查询
  9. php获取站点的根目录和站点的根URL
  10. C# 实现酒店房态图