python或perl语言都提供了很方便的对大整数计算的功能,这在C或Fortran中不易实现,需调用相关的库或另编程序。

多年前听公开课,一位老师给学生讲电子商务安全,涉及到公钥密码,讲得生动,但没公式没具体的例子,总觉不合适,后来想想,找几个数做例子因涉及到大整数运算,可能还真有点难度。

有python或perl进行大数运算,就很容易了。

RSA加密算法是1977年Ron Rivest、Adi Shamir和Leonard Adleman一起提出的。所以别说数论或陈景润研究的没多大用,这就是最好的应用例证。

找两个大质数p、q,设n=p*q ,r=(p-1)*(q-1),

找e与r互质,且e

找d满足(d*e) mod r =1,(mod为取余)

(n,e) 就是公钥,(n,d)就是私钥,也可互换,

设M为明文整数 (把明文分解转换为小于n的数),C为密文

则加密过程为 C=M^e mod n

解密过程为 M=C^d mod n (^表示乘方运算)

一、不编程用python验证

设p=23,q=31,则n是23*31=713,r=(23-1)*(31-1)=660

设e=53,可找到一个d=137,(不想编程,用excel公式=MOD((A1*53),660))往下一拉就可找到(A列填自然数,B列写公式)。

则有(713,53),(713,137)为公钥和私钥。

如把公钥给对方,其对123加密:写123**53%713,加密结果为216。

用私钥解密:216**137%713,解密结果为123。

123**53是582064223547422878717064247856117219999744776198031672118462507358927240593089706379581941870601919048920591883。216*137更是一个大数。

二、用perl验证

同上例选23,31,找数d

>perl -e "foreach $d (1..1000){ print($d),last if 53*$d%660==1 }"

得出137。

对456加密及解密

D:>perl -Mbigint -e "print 456**53%713"

654

D:>perl -Mbigint -e "print 654**137%713"

456

其实23,37都是很小的素数,数字游戏,也挺有意思

转载本文请联系原作者获取授权,同时请注明本文来自康建科学网博客。

链接地址:http://blog.sciencenet.cn/blog-797552-703326.html

上一篇:感慨一下,那些图书馆下架的书

下一篇:不同时代姓名用字

芯片验证学perl还是python_科学网—用python或perl语言简单验证RSA算法 - 康建的博文...相关推荐

  1. 利用python安装opencv_科学网—Anaconda Python PyCharm PyQT5 OpenCV PyTorch TF2.0 安装指南 - 张重生的博文...

    Anaconda Python PyCharm PyQT5 OpenCV PyTorch TF2.0 安装指南与资料汇总 (用Anaconda配置Python集成开发环境,含Python3, PyQT ...

  2. python读取哨兵卫星数据_科学网—【Python】批量下载Sentinel-2卫星数据 - 江佳乐的博文...

    简介:本文介绍了一种基于Python批量下载Sentinel-2卫星数据的方法.通过该方法,用户可自定义感兴趣研究区(ROI).限定时间范围.选择产品类别.进行云量筛选,实现自动化批量下载Sentin ...

  3. 9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇

    对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理.分析和可视化. 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言.这两种语言各有优缺点,掌握这两种语言大 ...

  4. draw python_科学网—Draw figures with Python - 高琳琳的博文

    2D histgram import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # %ma ...

  5. python的安装包下载_科学网—[转载]python常用的安装包下载 - 林清莹的博文

    Python常用的安装包下载 1.首先应该下载dlib安装包(例如:dlib-19.8.1-cp36-cp36m-win_amd64.whl) 可以通过此网址进行下载对应的dlib包   https: ...

  6. 计算机科学数学姚期智,科学网—姚期智:一流,从“姚班”开始 - 孙滔的博文...

    如果我们做得好的话,在中国建立世界一流研究型大学的进程,会比任何人想象得都要快,中国的图灵之路也会比任何人想得都要接近--姚期智 清华"姚班" ■记者 孙滔 "如果你去问 ...

  7. 服务器虚拟化专用ovf模板,科学网—开放虚拟化格式规范2.0.0——OVF package - 唐宏伟的博文...

    开放虚拟化格式规范2.0.0--OVF package 学习笔记 开放虚拟化格式规范(Open Virtualization Format Specification)是由DMTF制定的关于虚拟化技术 ...

  8. c语言 奥数题目及答案,科学网—C语言做一道小学奥数题 - 康建的博文

    见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...

  9. PHP安卓获取gpgga,科学网—GPS编码格式及C语言解码 - 王红旗的博文

    有关磁偏角和地图定位的问题: 地图的方向:上北.下南.左西.右东是大多数地图的方向,但这可不是通用原则,如果地图上有方向标,可以通过方向标了解到这些. 地磁极是接近南极和北极的,但并不和南极.北极重合 ...

最新文章

  1. 程振波 算法设计与分析_算法分析与设计之动态规划
  2. 在你的计算机上使用qr码登录,如何在Android 10上使用QR码共享您的Wi-fi凭据 | MOS86...
  3. github中删除已建仓库(二)
  4. iOS任何界面全屏炫酷倒计时,一句代码就够了
  5. php 创mysql_PHP MySQL 创建表
  6. 微积分28-复合函数与隐函数的微分法
  7. 微信公众帐号中使用的QQ表情代码对照表
  8. Linux(1)之文件“776”
  9. php时间戳转换英文格式日期_php中时间戳和日期格式的转换
  10. Intelligent driver model(IDM)
  11. 论文解读-CenterNet:Keypoint Triplets for Object Detection
  12. Input输入框的失焦
  13. vue + echarts 之饼形图
  14. Python爬虫——王者荣耀全皮肤拉取
  15. vue从数据库获取图片地址,为什么图片地址为变量时找不到图片?
  16. jvm中年轻代,老年代
  17. 南泰就业联盟Android,统一推送联盟终于发力!国产厂商纷纷加入:将彻底解决安卓卡顿问题...
  18. 李小龙的传奇人生(2)
  19. 劲爆!电波拉皮有什么危害,电波拉皮效果好吗能维持多久,人见人夸了
  20. Java最全截取字符串方法

热门文章

  1. 联想高校AI精英挑战赛西部赛区落幕,西安交大过关斩将拔得头筹
  2. 使用MATLAB求图像的形心、外接矩形顶点坐标并标记
  3. c语言error 1075,fatal error C1075
  4. 将基础设施作为服务的云计算机类型是,将基础设施作为服务的云计算服务类型是IaaS,其中的基础设施包括( )...
  5. 双重游标的使用以及动态游标的使用
  6. Linux无界面新建Oracle数据库实例
  7. 碰到Maven依赖冲突脑壳疼?这个工具了解一下
  8. linux ubuntu 常用口令
  9. 数据在网络中是如何传输的
  10. 复杂网络学习笔记:networkx实现网络的基本拓扑性质