RSA
RSA
RSA
RSA
算法的
C
C
C
C
语言实现
一、 RSA 算法的描述
1 、 选取长度相等的两个大素数 p 和 q ,计算其乘积:
n = pq
然后随机选取加密密钥 e ,使 e 和 (p – 1)(q – 1) 互素。
最后用欧几里德扩展算法计算解密密钥 d ,以满足
ed = 1(mod(p – 1) ( q – 1))
即 d = e – 1 mod((p – 1)(q – 1))
e 和 n 是公钥, d 是私钥
2 、 加密公式如下:
ci = mi ^ e ( mod n )
3 、 解密时,取每一密文分组 ci 并计算:
mi = ci ^ d ( mod n )
Ci ^ d = ( mi ^ e ) ^ d = mi ^( ed ) = mi ^[ k ( p – 1 ) ( q – 1 ) +1 ]
= mi mi ^[ k ( p – 1 ) ( q – 1 ) ] = mi * 1 = mi
4 、 消息也可以用 d 加密用 e 解密
二、 C 源程序
//RSA 算法的 C 程序实现
#include <stdio.h>
int candp(int a,int b,int c) // 数据处理函数,实现幂的取余运算
{ int r=1;
b=b+1;
while(b!=1)
{
r=r*a;
r=r%c;
b--;
}
printf("%d",r);
return r;
}
int fun(int x,int y) // 公钥 e 与 t 的互素判断
{
int t;
while(y)
{
t=x;
评论0