我試過編寫一個函數來使用擴展歐幾里德算法找到RSA的私鑰,我找不到錯誤,但我真的不想從頭開始重新開始!對於某些價值觀來說,這是正確的,但對於其他人來說,這是不正確的,我不明白爲什麼,我真的很感激這種幫助,如果這個問題太含糊,我很抱歉(我知道這會讓人們煩惱)。任何人都可以找到錯誤?非常感謝您提前:RSA解密的私鑰C++
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」是數字嗎? – MichaelRad
我收到錯誤「'mpz_t'沒有命名一個類型」 – MichaelRad
哦,你需要安裝GMP之後才能使用它。我只是給你一些想法。但首先嚐試使用'long long int'作爲數據類型,以便它不是無符號的。然後再次嘗試使用您的測試數據。 –