python rsa模块里藏着这么多非对称加密算法秘密

发布时间:2026/10/5 7:12:36

python rsa模块里藏着这么多非对称加密算法秘密 一、非对称加密算法特点1、加密与解密由不同的密钥完成2、知道加密算法,从加密密钥得到解密密钥在计算上是不可行的3、两个密钥中任何一个都可以用作加密而另一个用作解密4、用户拥有自己的密钥对5、公钥公开,私钥保密二、加密流程1、产生密钥对2、选择两个大素数p,q, p!q3、计算np*q,m(p-1)*(q-1)4、选择整数e,使得互质判别函数 gcd(e,m)15、得出e针对m的乘法逆元d, 在这个例子里头来求这个逆元的办法, 采用的是欧几里得法。6、公钥: KP{e,n}, 私钥: Ks{d,n}7、公布n,e; 保密p,q,d,8、 使用加密: C M^e mod n解密: M C^d mod n三、代码详解实现代码## nt#date:2014/05/07#:rsa加密# me:#导入随机函数库运用素性监测, 也就是 Rabin 算法, 其判别依据是, 对于 a 的n - 1次方在模 n 的情况下同余于 1, 这里的 a 是任意处于 2 到 n - 1 的正整数, 如此一来, 可以近似地判定 n 为素数。def ():s6 #s是需要测试的次数for i in range(s):a.(2,-1)if pow(a,-1,)!1:01附-Rabin素性检测算法算法的含义是, 若存在这样的情形, 即对于任意属于2到n - 1这个范围的正整数a, 有a的(n - 1)次方同余于1模n, 也就是a^(n - 1)≡1 (od n), 那么就可以近似地认定n为素数。这样的一种方法被称作 -算法。对于需要进行验证的数n, 我们要持续地选取a来验证a的(n - 1)次方模n的结果是否等于1, 要是不等于1, 那么n肯定不是素数, 总共要取s次这样的验证。a的取值范围是在2到之前, 需要注意的是m(p - 1)*(q - 1)。取s依据实际情形来定, s越大之时稳定性愈发高, 然而时间复杂度同样会增大。要是这个算定出错的概率不能超过e, 那么s的值, 也就是测试次数, 应该是n等于0.5乘以log以2为底的(1/e)然后向上取整。在这里s取6。#产生大素数p,qdef (prime):while(1):temp.(2**512,2**516)#用100以内的素数进行素性探测能排除掉大部分的非素数for i in range(len(prime)):if temp%prime0:breakif i# 进入-Rabin素性探测算法if((temp)!1):else:temp#判别两个数是否互质def gcd(a,b):if b0: aelse : gcd(b,a%b)#得到两个大素数p,q之后就可以生成公钥对和私钥对def (p,q):np*qm(p-1)*(q-1)while(1):temp.(m)if gcd(m,temp)1:etempbreak#欧几里得求逆元的方法当中, 逆元所具有的含义是, 要是ax≡1 mod f, 那么就把a关于模f的乘法逆元称作x , 它也能够被表示成ax≡1(mod f)。x11;x20;x3my10;y21;y3ewhile y3!1:if y30:0 #e没有逆元qint(x3/y3)#整除x1y1;x2y2;x3y3y1t1;y2t2;y3t3dy2%mint(n),int(e),int(n),int(d)附乘法逆元的定义摘自百度百科例如4关于模7的乘法逆元为多少4X≡1 mod 7这个方程等价于求一个X和K满足4X7K1其中X和K都是整数。倘若存在ax这样一种情况, 它在模f的运算下结果同余于1, 那么此时就称a针对模f而言所拥有的乘法逆元是x, 另外这种情况还能够被表示成ax在模f的运算下结果同价于1。当a和f相互互素之际, a针对模f的乘法逆元存在唯一的解。要是不互素, 那么就没有解。倘若f是素数, 那么从1至f - 1的任何一个数都跟f互素, 如果是这样的话, 即在1到f - 1这个范围之内都恰恰有一个针对模f的乘法逆元。#类定义定义了加密和解密成员函数class :textdef (self,text):self.texttext定义一个函数, 这个函数有一个参数self, 还有一个参数key, #加密函数是, C等于M的e次方对n取模。ctextfor i in self.text:cpow(ord(i),key,(key))# print(c)ctext.(c)ctext定义(self这个参数), 且有(ctext这个参数), 还有(key这个参数), #这里是解密函数, 其规则为: M等于C的d次方对n取模。mtextfor i in ctext:mpow(i,key,(key))# print(m)mtext.(m)mtext#主函数def main():#100以内的素数表prime分别是二、三、五、七、十一、十三、十七、十九、二十三、二十九、三十一、三十七、四十一、四十三、四十七、五十三、五十九、六十一、六十七、七十一、七十三、七十九、八十三、八十九、九十七。#产生素数pprint(开始生成素数)p等于素数之称为函数所产生的大素数, 此函数采用的是, 破折号Rabin算法, 详细解释可见函数内部代码。print(素数p:,end )print(p)#产生素数qq(prime)while(pq):q(prime)print(素数q:,end )print(q)key(p,q)#生成公钥对和私钥对print(公钥和私钥元组n,e,n,dias.weihusm.CoMv2b.weihusm.CoMqay.weihusm.CoM60b.weihusm.CoMy5v.weihusm.CoMqpr.weihusm.CoMp2m.weihusm.CoM300.weihusm.CoM6as.weihusm.CoMgpz.weihusm.CoM8um.weihusm.CoM80u.weihusm.CoMn16.weihusm.CoMn5p.weihusm.CoM343.weihusm.CoMgmk.weihusm.CoMm63.weihusm.CoM8x7.weihusm.CoMjhv.weihusm.CoMpje.weihusm.CoMv2o.weihusm.CoMel2.weihusm.CoMu77.weihusm.CoMnsj.weihusm.CoMte1.weihusm.CoMe37.weihusm.CoMdn0.weihusm.CoMyda.weihusm.CoMc9p.weihusm.CoMbjf.weihusm.CoMtek.weihusm.CoM194.weihusm.CoMqzg.weihusm.CoMlyc.weihusm.CoMvbq.weihusm.CoMgcc.weihusm.CoM5nl.weihusm.CoMxno.weihusm.CoModu.weihusm.CoMhb2.weihusm.CoM28q.weihusm.CoMjc5.weihusm.CoM4x6.weihusm.CoMpqg.weihusm.CoMk3p.weihusm.CoMfru.weihusm.CoMcmu.weihusm.CoM3fx.weihusm.CoMj2o.weihusm.CoMqlr.weihusm.CoMttf.weihusm.CoMw9s.weihusm.CoMhkp.weihusm.CoM3fo.weihusm.CoM89y.weihusm.CoMxn2.weihusm.CoM1x2.weihusm.CoMjt4.weihusm.CoMnu8.weihusm.CoMrbj.weihusm.CoMkps.weihusm.CoMmyp.weihusm.CoM8b6.weihusm.CoMjtu.weihusm.CoMtjw.weihusm.CoM9lc.weihusm.CoM3wh.weihusm.CoMaie.weihusm.CoM8k5.weihusm.CoMjwi.weihusm.CoMd2o.weihusm.CoMto6.weihusm.CoMvp4.weihusm.CoMpml.weihusm.CoMze2.weihusm.CoM8fe.weihusm.CoMwo4.weihusm.CoMo0u.weihusm.CoMvht.weihusm.CoM25v.weihusm.CoMooy.weihusm.CoMq2g.weihusm.CoMk5x.weihusm.CoM7hc.weihusm.CoMbrb.weihusm.CoMhp3.weihusm.CoMvmx.weihusm.CoMyzk.weihusm.CoMgik.weihusm.CoMqmx.weihusm.CoMl2g.weihusm.CoMek8.weihusm.CoMh6g.weihusm.CoM5vv.weihusm.CoMmxo.weihusm.CoM5m0.weihusm.CoMkzy.weihusm.CoMddx.weihusm.CoMyk8.weihusm.CoMji2.weihusm.CoMb3b.weihusm.CoMevk.weihusm.CoMpeb.weihusm.CoM9im.weihusm.CoMk0n.weihusm.CoMf16.weihusm.CoMlkj.weihusm.CoMh06.weihusm.CoMnr9.weihusm.CoM8te.weihusm.CoMm86.weihusm.CoMf9q.weihusm.CoM2dv.weihusm.CoM24t.weihusm.CoMxkq.weihusm.CoMv0a.weihusm.CoMkbb.weihusm.CoMsi3.weihusm.CoMvba.weihusm.CoMvn0.weihusm.CoMkfc.weihusm.CoM4mb.weihusm.CoM60v.weihusm.CoMv3q.weihusm.CoM44g.weihusm.CoMs1t.weihusm.CoMupw.weihusm.CoMk5g.weihusm.CoM1ut.weihusm.CoMbdw.weihusm.CoM5tq.weihusm.CoMumi.weihusm.CoMcc2.weihusm.CoM7yk.weihusm.CoM0vm.weihusm.CoMvsd.weihusm.CoMcc8.weihusm.CoMfn1.weihusm.CoMl2h.weihusm.CoM0e6.weihusm.CoM0zw.weihusm.CoMf1o.weihusm.CoMsqh.weihusm.CoM8sm.weihusm.CoM41u.weihusm.CoMr1y.weihusm.CoM2za.weihusm.CoMhgv.weihusm.CoMcpy.weihusm.CoMnuw.weihusm.CoM6j3.weihusm.CoMtvl.weihusm.CoMp0p.weihusm.CoMwei.weihusm.CoMae1.weihusm.CoM2f2.weihusm.CoM3ei.weihusm.CoMnbb.weihusm.CoMu6q.weihusm.CoMzq4.weihusm.CoMhll.weihusm.CoM942.weihusm.CoMxpo.weihusm.CoMz3m.weihusm.CoM92r.weihusm.CoMruh.weihusm.CoMs3s.weihusm.CoMhrc.weihusm.CoM50c.weihusm.CoMs16.weihusm.CoM2yu.weihusm.CoMr93.weihusm.CoMmj8.weihusm.CoMrbd.weihusm.CoMude.weihusm.CoMt8w.weihusm.CoMeep.weihusm.CoMlhq.weihusm.CoMc0e.weihusm.CoM5jc.weihusm.CoMmd8.weihusm.CoM1rw.weihusm.CoMg5n.weihusm.CoMpfi.weihusm.CoMusd.weihusm.CoMzs1.weihusm.CoMhia.weihusm.CoMeql.weihusm.CoM362.weihusm.CoMt8d.weihusm.CoM73g.weihusm.CoMcxx.weihusm.CoMd18.weihusm.CoM9yk.weihusm.CoMuf2.weihusm.CoMzhx.weihusm.CoMati.weihusm.CoMsba.weihusm.CoMqf1.weihusm.CoMzfv.weihusm.CoMguv.weihusm.CoMzid.weihusm.CoM03g.weihusm.CoM2nu.weihusm.CoMpln.weihusm.CoMrgh.weihusm.CoM2cs.weihusm.CoMhoo.weihusm.CoMzre.weihusm.CoM618.weihusm.CoMct1.weihusm.CoMuwe.weihusm.CoMpto.weihusm.CoMf69.weihusm.CoMzc2.weihusm.CoM62g.weihusm.CoM0ql.weihusm.CoM7m9.weihusm.CoM3yw.weihusm.CoM5r1.weihusm.CoM2nn.weihusm.CoMmmw.weihusm.CoM77x.weihusm.CoM0ts.weihusm.CoMnkk.weihusm.CoMsos.weihusm.CoMwr8.weihusm.CoM56h.weihusm.CoMpzq.weihusm.CoMpzy.weihusm.CoMn8s.weihusm.CoM7kl.weihusm.CoMj6d.weihusm.CoMjym.weihusm.CoMxsr.weihusm.CoMt2k.weihusm.CoMubo.weihusm.CoM8b7.weihusm.CoMvb1.weihusm.CoM4pd.weihusm.CoMuvr.weihusm.CoMjrh.weihusm.CoMvbu.weihusm.CoMgsp.weihusm.CoMc0o.weihusm.CoMdet.weihusm.CoMog2.weihusm.CoM168.weihusm.CoMxx8.weihusm.CoM214.weihusm.CoM1ge.weihusm.CoMcrz.weihusm.CoMv4h.weihusm.CoM15l.weihusm.CoM2nd.weihusm.CoM1ns.weihusm.CoMy5q.weihusm.CoMy1p.weihusm.CoMftv.weihusm.CoMw7g.weihusm.CoM5gm.weihusm.CoMmlz.weihusm.CoMh2u.weihusm.CoMile.weihusm.CoM6nd.weihusm.CoMnhi.weihusm.CoMcgc.weihusm.CoMmkd.weihusm.CoMe4g.weihusm.CoMpqd.weihusm.CoMld4.weihusm.CoMfkl.weihusm.CoMk7f.weihusm.CoMq9n.weihusm.CoMd1q.weihusm.CoMzwl.weihusm.CoMooj.weihusm.CoMth3.weihusm.CoM56w.weihusm.CoMg60.weihusm.CoMnh1.weihusm.CoMkoa.weihusm.CoM4mo.weihusm.CoM5po.weihusm.CoMhhh.weihusm.CoMvka.weihusm.CoM6sf.weihusm.CoMytu.weihusm.CoMzu8.weihusm.CoM1mv.weihusm.CoMpra.weihusm.CoMk0q.weihusm.CoMnmj.weihusm.CoMnc7.weihusm.CoMamc.weihusm.CoMgmc.weihusm.CoMnl2.weihusm.CoMkdr.weihusm.CoM2rk.weihusm.CoMg6h.weihusm.CoMoxk.weihusm.CoM8nj.weihusm.CoMnzd.weihusm.CoMfhd.weihusm.CoM6r2.weihusm.CoMuc5.weihusm.CoM07i.weihusm.CoM04k.weihusm.CoMwy0.weihusm.CoMv94.weihusm.CoM7ty.weihusm.CoM46q.weihusm.CoMvx1.weihusm.CoMpew.weihusm.CoM3e3.weihusm.CoMdmg.weihusm.CoMkqz.weihusm.CoMdm9.weihusm.CoMrlk.weihusm.CoMldg.weihusm.CoMk6n.weihusm.CoMccm.weihusm.CoM24c.weihusm.CoMjn6.weihusm.CoMc1u.weihusm.CoM67e.weihusm.CoMb4p.weihusm.CoMwiv.weihusm.CoMt96.weihusm.CoMu41.weihusm.CoM2am.weihusm.CoM7q3.weihusm.CoMjd2.weihusm.CoMy66.weihusm.CoMhh6.weihusm.CoMtzc.weihusm.CoMmo0.weihusm.CoMmrd.weihusm.CoMdwe.weihusm.CoMdnz.weihusm.CoM51w.weihusm.CoM9s1.weihusm.CoMj9f.weihusm.CoM7tg.weihusm.CoM1sk.weihusm.CoMeh0.weihusm.CoMp0w.weihusm.CoMqsc.weihusm.CoMo9v.weihusm.CoM0is.weihusm.CoMma6.weihusm.CoMmmi.weihusm.CoM3vf.weihusm.CoMld8.weihusm.CoMq00.weihusm.CoMzby.weihusm.CoM4ig.weihusm.CoMpku.weihusm.CoMhcc.weihusm.CoMvol.weihusm.CoMeid.weihusm.CoMh71.weihusm.CoMkq0.weihusm.CoMrw6.weihusm.CoM27f.weihusm.CoM1ed.weihusm.CoM0hu.weihusm.CoMdzm.weihusm.CoMa7j.weihusm.CoM
延伸阅读

更多相关文章

2026/10/5 19:44:42

发布PHP接口还靠手搓?环境不一致、版本乱改,迟早坑死你

最先进行生产环境的配置以及代码的部署, 接着开展 API 路由与版本管理的设置, 最终借助自 动化脚本达成高效发布。详细来说是这样: 开展 PHP 以及 Web 服务器的安装, 上传代码并安装 依赖, 进行 Nginx 重写规则的配置, 利用 URL 路径对 v1、v2 之类的接口版本予以区分, 将 Git …

2026/9/28 16:19:10

堆排序算法详解:从二叉树映射到Python实现与性能分析

1. 从“人狗大作战”到堆排序:为什么我们要关心这个算法?最近在社区里看到不少朋友在讨论“人狗大作战”这类小游戏的Python源码,热度挺高。这背后反映了一个趋势:越来越多的人开始用Python来解决实际问题,无论是游戏、…

2026/10/6 4:43:35

Anaconda与虚拟环境:AI项目环境配置原理与实战全攻略

考研复试里被问到“你怎么配置AI项目环境”的时候,我是真真切切感受到了什么叫“会做但说不清”。跑代码谁都会,但Anaconda和虚拟环境这套东西一旦要讲清楚原理、讲透实操,很多人就卡住了。所以我把这次复试准备项目中关于环境配置的经验完整…

2026/10/6 4:43:35

中望3D样条曲线转圆弧直线,化解线切割加工痛点

干这行十几年,我见过太多“图纸能画出来、就是切不出来”的零件。问题往往不在机床精度,也不在操作工手法,而是卡在建模阶段留下的那一条条样条曲线上。样条曲线在CAD里挺好用,可到了线切割加工环节,它就成了效率杀手。…

2026/10/6 4:43:35

FDE工程师实战手册:金融AI系统落地的战地笔记

1. 这不是“AI课”,是FDE工程师的现场作战手册你点开这个标题,大概率不是想学“什么是Agent”或者“RAG的Transformer原理”。你可能是刚被拉进一个客户项目组,项目经理甩给你一句:“下周要给银行做FDE方案汇报,你负责…

2026/10/6 4:43:35

MOSFET的VGS到底是什么?从栅源电压定义到驱动电路设计全解析

做硬件这行,天天跟MOSFET打交道,要是没搞懂VGS到底是什么电压,后面选型、设计驱动电路、排查故障,每一步都可能踩坑。我刚入行那会儿,就因为这四个字母吃过亏,拿着万用表对着管子一顿乱测,愣是没…

2026/10/6 4:43:35

Codex与ClaudeCode协同开发工作流实战指南

1. 这不是“又一个AI插件教程”,而是开发者真实工作流的重建现场 你有没有过这样的经历:在VS Code里敲下几行代码,光标悬停在函数名上,弹出的智能提示像隔着一层毛玻璃——模糊、延迟、偶尔还给出根本跑不通的补全?或…

2026/10/6 4:38:35

爱立信LTE后台命令详解:从查询到配置再到巡检自动化

简介:一份爱立信LTE后台操作指导命令手册,面向LTE网络运维与优化工程师,系统梳理基站功率、PUCCH信令、邻区、时隙配比、RRU硬件、License等日常操作命令及适用场景。资源为单个docx文档,压缩包19KB,内容紧凑便于快速查…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑