MATLAB实现RSA算法
来源:互联网 发布:福州广电网络 编辑:程序博客网 时间:2024/05/22 16:31
RSA算法
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2×e1)≡1(mod(p-1)×(q-1))。
(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A≡B^e2( mod n);B≡A^e1 (mod n);(公钥加密体制中,一般用公钥加密,私钥解密)
e1和e2可以互换使用,即:
A≡B^e1 (mod n);B≡A^e2( mod n);
其他更多关于RSA算法请见百度
MATLAB实现
这里就直接列代码出来了,目前只能实现RSA加密,还不能实现解密,因为解密的时候由于得出来的密钥的e2(d)太大,导致密文的密钥的次方太大,超出了MATLAB默认的数值范围,所以是不能解密。
function encode_decode=myrsa(plaintextORciphertext,p,q,flag,eORd)%p q 输入的两个素数%当flag!=0时,eORd为与p-1)(q-1)的最小公倍数L互素的数,且小于L,即为公钥%当flag=0时,eORd为私钥%flag等于0时为解密,不等于0时为加密。默认为加密;%made by Canlong Zhang%date 2017.12.20 17:03:01%设置编码为utf-8slCharacterEncoding('UTF-8');%如果输入的参数少于4个那么就默认是加密if nargin<4 flag=1; end;%公钥nn=p*q;%如果flag不等于0,则是加密if flag~=0 %输入的为明文 plaintext=plaintextORciphertext; %求fai=(p-1)(q-1) fai=(p-1)*(q-1); %如果加密的时候没有给出公钥e,则求公钥 if nargin<5 for i=2:fai if gcd(i,fai)==1&i<fai eORd=i; break; end end end e=eORd; %计算出私钥 for j=3:fai if mod(e*j,fai)==1 %密钥d d=j; break; end end %遍历明文 plaintextLength=length(plaintextORciphertext); %将密文转化为ascii码 plaintextASCII = double(plaintext); %加密 ciphertextASCII=mod(plaintextASCII.^e,n); ciphertext=char(ciphertextASCII); fprintf('The ciphertext is: %s\n',ciphertext); fprintf('The public key is:n=%d,e=%d\n',n,e); fprintf('The private key is:n=%d,d=%d\n',n,d);%如果flag为0,则是解密else if flag==0 if nargin<5 error('加密时,输入参数错误,输入参数应该等于5') end %输入的密文 ciphertext=plaintextORciphertext; %公钥n n=p*q; %私钥d d=eORd; %解密 ciphertextASCII=double(ciphertext); plaintextASCII=mod(ciphertextASCII.^d,n); plaintext=char(plaintextASCII); fprintf('The plaintext is: %s\n',plaintext); fprintf('The private key is:n=%d,d=%d\n',n,d) endend
提供一个下载链接。
http://kanlon.ink/Canlong/Canlong.zip
后期有时间,我会继续改进的。
阅读全文
0 0
- MATLAB实现RSA算法
- MATLAB-RSA加密算法及其MATLAB实现
- RSA算法的实现
- VB实现Rsa算法
- DES、RSA算法实现
- 实现RSA算法
- RSA算法Java实现
- RSA算法Python实现
- RSA算法的实现
- Java实现RSA算法
- python实现rsa算法
- JAVA实现RSA算法
- RSA算法实现
- RSA算法实现(续)
- RSA算法Java实现
- java实现RSA算法
- RSA算法Java实现
- 用java实现RSA算法
- SCRAPY_part2_基础TIPS
- 阻塞queue系列之ArrayBlockingQueue
- Win7(64)+eclipse(64)+tomcat7(64)+jdk7(64)开发环境配置
- 171220
- 【BZOJ1010】玩具装箱
- MATLAB实现RSA算法
- Junit简单使用方法
- Presto-[7]-Presto Security
- 蒂高卫浴-数夫F19家具ERP项目是送给企业10周年庆最好的礼物
- Java7的Zip工具类:Zip File System Provider
- Linux mysql安装
- typedef和#define 介绍和使用
- Linux下安装比特币矿池p2pool笔记
- Javap框架