MATLAB实现RSA加密解密
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加密解密相关推荐
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- ios php rsa加密解密,php rsa加密解密使用详解
第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem 从上面看出通 ...
- genrsa out php,PHP进行RSA加密解密
最近在着手写一个服务端安全接口规范,需要用到RSA加密解密.所以小试牛刀一下,并且做个记录. 环境: Win7 64位 PHP 5.6.12 需要原型工具: 一.安装OpenSSL 随意安装到哪里 二 ...
- C# Java间进行RSA加密解密交互
C# Java间进行RSA加密解密交互 原文:C# Java间进行RSA加密解密交互 这里,讲一下RSA算法加解密在C#和Java之间交互的问题,这两天纠结了很久,也看了很多其他人写的文章,颇受裨益, ...
- RSA加密解密及数字签名Java实现--转
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...
- [crypto]-53-openssl命令行的使用(aes/rsa签名校验/rsa加密解密/hmac)
常用技巧 如何编写一个二进制规律性的文件, 比如你可以编写一个"0123456789abcdef"的文本文件,记得删除换行符然后用ultraedit打开,ctrl+H就可以看到二进 ...
- Java使用RSA加密解密签名及校验
RSA加密解密类: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; i ...
- python实现rsa加密源代码_python实现RSA加密(解密)算法
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. 今天只有短的RSA钥匙才可能被强力方式解破.到2008年为止,世界上还没有任何可靠 ...
- python下RSA加密解密以及跨平台问题
项目合作需要,和其他网站通信,消息内容采用RSA加密方式传递.之前没有接触过RSA,于是两个问题出现了: 声明: 环境WIN 7 + python 2.6.6 RSA格式:PEM 一.Python下R ...
最新文章
- PAT甲级1102 Invert a Binary Tree:[C++题解]反转二叉树、递归
- word2vec原理(一): 词向量、CBOW与Skip-Gram模型基础
- linux 网卡 开启dhcp,Linux DHCP如何绑定指定的网卡???
- vue中warning_vue项目运行提示Warnings while compiling.警告的解决方法
- 这次看到源码了,华为开源了方舟编译器
- 图片链接在FireFox下好用,但是在IE下不好用!
- 如何看待职场猝死?燕麦企业云盘教你9大绝招提升职场幸福感
- mac 终端 常用命令
- 范浩强treap 普通平衡树
- 【LOJ6038】【雅礼集训 2017 Day5】远行(LCT,树的直径)
- 数字视频编解码基础知识大全
- 《暮光之城》——如果那真的是你,就请你再勇敢一点、再直接一点,因为我早已经不可救药的爱上你了。你是吸血鬼也罢,你是致命危险也罢,你是什么,我都无所谓。
- 弘玑Cyclone发布全线产品 | 多个产品与功能系行业首创
- 03.subview_and_superview
- 绝对高效实现! 给你一个包含n个整数的数组nums,判断nums是否存在三个元素a,b,c使得a+b+c =0...
- cgi进程设置多少 宝塔_开源、强大的Linux服务器集群管理工具,比宝塔好用!
- 无锡中软国际有限公司笔试题(Java)
- 分析及解决:虚拟机无法连接虚拟设备idel 0:1 问题
- 教师资格证报名网页兼容问题
- [转载]“我做SLAM,那么论文该怎么发?”