【发布时间】:2012-01-19 17:42:16
【问题描述】:
我想计算 abmod n 以用于 RSA 解密。我的代码(如下)返回不正确的答案。它有什么问题?
unsigned long int decrypt2(int a,int b,int n)
{
unsigned long int res = 1;
for (int i = 0; i < (b / 2); i++)
{
res *= ((a * a) % n);
res %= n;
}
if (b % n == 1)
res *=a;
res %=n;
return res;
}
【问题讨论】:
-
-1:您是否尝试过在调试器中单步执行您的代码?你能举个例子说明哪里出错了吗?
-
您的操作员分组是什么?
-
为什么你不做 pow(a,b) % n?
-
看来你需要
% 2
insted of% n
in lastif
-
例如,
int
溢出,但 64 位类型就足够了。但是,如果您要认真使用 RSA,则需要大整数,gmp
将是一个选项(并且具有模块化功能)。