RSA密码是现在应用最广泛的公钥密码,其基本过程如下:

1.选取两个大素数:p,q;

2.计算n=p*q,和n的欧拉函数值n1,n1=(p-1)*(q-1);

3.选择一随机整数e,满足e和n1的最大公约数为1,即gcd(n1,e)=1;

4.计算d,d是e和n1的乘法逆元,满足mod(d*e,n1)=1;

5.这样我们得到公开钥{e,n}和私密钥{d,n};

6.加密过程:明文M加密得到密文C,满足:C=mod(M^e,n);

7.解密过程:密文C解密得到明文M,满足:M=mod(C^d,n)。

下面对于给步骤使用的算法原理进行分析:

1.计算欧拉函数值:

n1数值等于小于n且和n互为素数的正整数的个数,可以采用分解质因数的方式求出n1。

例:求120的欧拉函数值,120的质因数为2,3,5。(120=2^3*3*5)

故n1=120*(1-1/2)*(1-1/3)*(1-1/5)=32。

2.求乘法逆元:

依据扩展欧几里得算法,例:求89在模122下的乘法逆元(e=89,n=122)。

令d4=1,逐步向上求解,可解出d1=85。

3.高次幂求模运算:

例:计算mod(223^9,213)

1.将8转换为二进制数1001,设最终结果res=1,变量temp=mod(223,213)

2.循环以下操作至遍历结束:

判断当前位,如果为1,则更新res=mod(res*temp,213)。不为1则不对res运算。

更新temp=mod(temp*temp,213)。

3.最终输出结果res。

MATLAB代码收录于:

MATLAB实现RSA加密解密-Matlab文档类资源-CSDN下载

MATLAB实现RSA加密解密相关推荐

  1. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  2. ios php rsa加密解密,php rsa加密解密使用详解

    第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem 从上面看出通 ...

  3. genrsa out php,PHP进行RSA加密解密

    最近在着手写一个服务端安全接口规范,需要用到RSA加密解密.所以小试牛刀一下,并且做个记录. 环境: Win7 64位 PHP 5.6.12 需要原型工具: 一.安装OpenSSL 随意安装到哪里 二 ...

  4. C# Java间进行RSA加密解密交互

    C# Java间进行RSA加密解密交互 原文:C# Java间进行RSA加密解密交互 这里,讲一下RSA算法加解密在C#和Java之间交互的问题,这两天纠结了很久,也看了很多其他人写的文章,颇受裨益, ...

  5. RSA加密解密及数字签名Java实现--转

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...

  6. [crypto]-53-openssl命令行的使用(aes/rsa签名校验/rsa加密解密/hmac)

    常用技巧 如何编写一个二进制规律性的文件, 比如你可以编写一个"0123456789abcdef"的文本文件,记得删除换行符然后用ultraedit打开,ctrl+H就可以看到二进 ...

  7. Java使用RSA加密解密签名及校验

    RSA加密解密类: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; i ...

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

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

  9. python下RSA加密解密以及跨平台问题

    项目合作需要,和其他网站通信,消息内容采用RSA加密方式传递.之前没有接触过RSA,于是两个问题出现了: 声明: 环境WIN 7 + python 2.6.6 RSA格式:PEM 一.Python下R ...

最新文章

  1. PAT甲级1102 Invert a Binary Tree:[C++题解]反转二叉树、递归
  2. word2vec原理(一): 词向量、CBOW与Skip-Gram模型基础
  3. linux 网卡 开启dhcp,Linux DHCP如何绑定指定的网卡???
  4. vue中warning_vue项目运行提示Warnings while compiling.警告的解决方法
  5. 这次看到源码了,华为开源了方舟编译器
  6. 图片链接在FireFox下好用,但是在IE下不好用!
  7. 如何看待职场猝死?燕麦企业云盘教你9大绝招提升职场幸福感
  8. mac 终端 常用命令
  9. 范浩强treap 普通平衡树
  10. 【LOJ6038】【雅礼集训 2017 Day5】远行(LCT,树的直径)
  11. 数字视频编解码基础知识大全
  12. 《暮光之城》——如果那真的是你,就请你再勇敢一点、再直接一点,因为我早已经不可救药的爱上你了。你是吸血鬼也罢,你是致命危险也罢,你是什么,我都无所谓。
  13. 弘玑Cyclone发布全线产品 | 多个产品与功能系行业首创
  14. 03.subview_and_superview
  15. 绝对高效实现! 给你一个包含n个整数的数组nums,判断nums是否存在三个元素a,b,c使得a+b+c =0...
  16. cgi进程设置多少 宝塔_开源、强大的Linux服务器集群管理工具,比宝塔好用!
  17. 无锡中软国际有限公司笔试题(Java)
  18. 分析及解决:虚拟机无法连接虚拟设备idel 0:1 问题
  19. 教师资格证报名网页兼容问题
  20. [转载]“我做SLAM,那么论文该怎么发?”

热门文章

  1. java比较两个json文件的差异
  2. MQTT连接阿里云IoT(一)
  3. Android USB摄像头插拔监听
  4. fastadmin学习 02权限管理和数据限制
  5. Get和Post的区别是什么?
  6. HTML5兼容HEVC视频格式且支持本地绝对路径访问
  7. linux下安装工具——yum
  8. 一款超方便超强大的16进制编辑器软件-HxD
  9. 2023年阿里云优惠活动大全及购买攻略(完整版)
  10. 东北大学acm暑期夏令营结构体