rsa-crt算法高效率,多注释,带时间记录,效率分析,图形化交互界面的c语言实现代码
时间: 2023-02-13 08:50:57 浏览: 98
RSA-CRT算法是RSA算法的优化版本,它通过使用中国剩余定理(CRT)来提高RSA算法的运算效率。
这是一份带有多个注释、时间记录和效率分析的RSA-CRT算法的C语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 计算 a^b mod n
long long int fast_pow_mod(long long int a, long long int b, long long int n)
{
long long int res = 1;
while (b > 0)
{
if (b & 1)
{
res = (res * a) % n;
}
a = (a * a) % n;
b >>= 1;
}
return res;
}
// 扩展欧几里得算法,计算 gcd(a, b) 和 s, t 使得 sa + tb = gcd(a, b)
void extended_euclid(long long int a, long long int b, long long int *s, long long int *t)
{
if (b == 0)
{
*s = 1;
*t = 0;
return;
}
extended_euclid(b, a % b, s, t);
long long int tmp = *s;
*s = *t;
*t = tmp - (a / b) * (*t);
}
// 计算 a 在模 n 意义下的逆元
long long int mod_inverse(long long int a, long long int n)
{
long long int s, t;
extended_euclid(a, n, &s, &t);
if (s < 0)
{
s += n;
}
return s;
}
// RSA 加密
void rsa_encrypt(long long int *c, long long int *m, long long int e, long long int n, int len)
{
for (int i = 0; i < len; i++)
{
c[i] = fast_pow_mod(m[i], e, n);
}
}
// RSA 解密(使用 CRT 优化版本)
void rsa_decrypt_crt(long long int *m, long long int *c, long long int d, long long int p, long long int q)
{
long long int dp = d % (p - 1);
long long int dq =
阅读全文