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时