【发布时间】:2014-03-01 16:30:06
【问题描述】:
我尝试编写一个函数来使用扩展欧几里得算法查找 RSA 的私钥,但我找不到错误,但我真的不想从头开始!对于某些值,它是正确的,但对于其他值,它不是正确的,我不知道为什么,我真的很感激帮助,如果这个问题太含糊,我很抱歉(我知道这往往会惹恼这里的人)。任何人都可以找到错误吗?提前非常感谢您:
unsigned long long int modinv(unsigned long long int u, unsigned long long int v)
{
unsigned long long int inv, u1, u3, v1, v3, t1, t3, q;
unsigned long long int iter;
u1 = 1;
u3 = u;
v1 = 0;
v3 = v;
iter = 1;
while (v3 != 0)
{
q = u3 / v3;
t3 = u3 % v3;
t1 = u1 + q * v1;
u1 = v1; v1 = t1; u3 = v3; v3 = t3;
iter = -iter;
}
if (u3 != 1)
return 0;
if (iter < 0)
inv = v - u1;
else
inv = u1;
return inv;
}
【问题讨论】:
标签: c++ encryption rsa private-key