RSA

一、RSA算法原理:


二、算法实现步骤

略,书上,网上都已经讲得很详细了,而且又不多,过程也不复杂!


三、算法设计原则

这里往往是大家容易忽视的地方,所以有必要提一下。

RSA算法设计原则:
1.    p,q长度仅应相差几位
2.    (p-1),(q-1)都应有一个大的素数因子
3.    gcd(p-1,q-1)应该较小
4.    d>=n^(1/4)

方法:
1.选取gcd(p-1,q-1)=com在范围ushort内
2.在usigned short~unsigned int内选取两个互异的大素数p',q'
3.p=p'*com+1,q=q'*com+1
4.若gcd(p,q)!=1执行2
第一个条件必须p,q各位异或得1的位数要尽可能的少,不知道如何实现,

用abs( p - q ) <= eps 代替。
M=C^d mod n = ( M^e mod n )^d mod n =M^(e*d) mod n=M mod n
e*d mod phi(n) =1
要求gcd(M,n)=1 而 n=p*q所以p,q>M则gcd(M,n)恒立!
M为unicode值,2字节,

因此p,q选(ushort,uint]里的质数就可以了。本人为人方实现所以选择了(ushort,uint]

范围内的质数,实际是10^75~10^100之间。

 

 

 

 

四、原代码:

 

1.main.cpp


2.cryption.h


3.getVariable.h

4.millerRabin.h

5.variable.h


6.message.in

输入明文,可自定义!


原创,转载请注明!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值