首页 > 编程知识 正文

c语言网站用户加密算法,c语言文件加密算法

时间:2023-05-05 07:22:03 阅读:156169 作者:4048

一. RSA算法

首先,找到三个数,p,q,r,

其中,q是两个不同的素数,r是(p-1 ) ) ) q-1 )和q-1 )互为素数

p,q,r的3个数为private key

接着,找到m以使RM==1mod(p-1 ) ) q-1 )

这个m一定存在。 r与(p-1 ) ) ) q-1 )互质,因此可以通过辗转相除得到

然后计算n=pq

m、n这两个数是公共密钥

在数据为a的情况下,编码过程将其视为大整数,假设a‘n’

a ) )=n,则a为s进制表示(s(=n,通常为s=2^t ),

各位将小于n,并进行分段

然后计算b==a^m mod n,(0(=b ) n ),

b是编码数据

解码的过程包括计算c==b^rmodpq(0(=c ) pq ),

因此,解码完成后,证明c和a实际上相等:)

如果第三者进行窃听,他会得到一些数。 m、n(=pq )、b

如果他要解码,就必须想办法得到r

所以,他必须先对n进行质因数分解

防止他分解的最有效的方法是找到两个非常大的素数p,q

让第三者进行因数分解很难

《定理》

在p、q为不同素数的情况下,RM==1mod(p-1 ) ) q-1 ),

a是任意正整数,b==a^m mod pq,c==b^r mod pq,

c==a mod pq

证明的过程,利用费马小定理,叙述如下。

m是任意素数,n是任意整数,n^m==n mod m

(换句话说,如果n和m互为素,则n^(m-1 )==1 mod m ) )。

运用一些基本的群论知识,可以很容易地证明费马小定理

《证明》

RM==1mod(p-1 ) ) q-1 ),因此RM=k ) p-1 ) ) q-1 )。 这里,k是整数

因为在modulo中是preserve乘法

(x==y mod z and u==v mod z=) xu==yv mod z ),

因此,c==b^r==(a^m ) r==a^ ) RM )==a^ ) k(p-1 ) ) q-1 )1) mod pq

1.A既不是p的倍数也不是q的倍数时,

a^(p-1 )==1 mod p )费马定理((a^ ) k ) p-1 ) (q-1 )==1 mod p

a^(q-1 )==1 mod q )费马定理((a^ ) k ) p-1 ) (q-1 ) )==1 mod q

因此,p、q都可以被a^(k(p-1 ) (q-1 ) ) (pq|a ^ (k (p-1 ) (q-1 ) ) ) )1)整除

即,a^(k ) p-1 (q-1 ) )==1 mod pq

=c==a^(k(p-1 ) ) q-1 )1)==a mod pq

2 .如果a是p的倍数,不是q的倍数,则为、

那么a^(q-1 )==1 mod q )费马小定理() ) ) )。

=’a ^ (k (p-1 ) q-1 ) )==1 mod q

=c==a^(k(p-1 ) ) q-1 )1)==a mod q

q | c - a

原因p | a

=c==a^(k(p-1 ) ) q-1 )1)==0 mod p

p | c - a

因此,pq|c-a=’c==amod pq

3 .如果a是q的倍数但不是p的倍数,则证明同上

4 .如果a同时为p和q的倍数,则、

那么pq | a

=c==a^(k(p-1 ) ) q-1 )1)==0 mod pq

pq | c - a

=) c==a mod pq

首先是密钥对的生成。

)1)选择两个大素数p和q )现在,两个数的长度都接近512bit是安全的)。

)2)计算乘积n=p*q,(n )=(p-1 ) q-1 )。 在此,) n是n的欧拉函数) )因为两个素数之积的欧拉函数等于两个数分别减去1的积)。

)3)随机选择整数e(1) e“”n )作为公钥d,要求e和) n的最大公约数为1,即满足两者为素数

(4)用Euclid扩展算法计算私钥d,满足d*e1 ) mod(n ) )即de^(-1 ) mod(n ) )。 e和n是公钥,d是私钥

注意: e和n必须公开。 两个素数p和q不再需要,可以丢弃,但不能遗漏。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。