❶ JAVA公鑰加密,私鑰解密,該怎麼解決
就是一個演算法的問題演算法生成公鑰加密然後把用私鑰解密而已
❷ 擴展歐幾里得演算法求逆元演算法結果是負數
寫一句
d=(d%MOD+MOD)%MOD;
轉化成正數就可以了
❸ 用擴展歐幾里得(Euclid)演算法計算1234 mod 4321的乘法逆元
Q X1 X2 X3 Y1 Y2 Y3
1 0 4321 0 1 1234
3 0 1 1234 1 -3 619
1 1 -3 619 -1 4 615
1 -1 4 615 2 -7 4
153 2 -7 4 -307 1075 3
1 -307 1075 2 309 -1082 1
4321-1082=3239
❹ 用C語言編制的求模逆元的擴展歐幾里德演算法,只要能基本上實現這個功能就行
轉自 http://hi..com/forverlin1204/blog/item/dadfc612faddbfdbf6039e5f.html
#include<iostream>
using namespace std;
//舉例 3x+4y=1 ax+by=1
//得到一組解x0=-1,y0=1 通解為x=-1+4k,y=1-3k
inline __int64 extend_gcd(__int64 a,__int64 b,__int64 &x,__int64 &y)//ax+by=1返回a,b的gcd,同時求的一組滿足題目的最小正整數解
{
__int64 ans,t;
if(b==0){x=1;y=0;return a;}
ans=extend_gcd(b,a%b,x,y);t=x;x=y;y=t-(a/b)*y;
return ans;
}
//(a/b)%mod=c 逆元為p,(p*b)%mod=1
//(a/b)*(p*b)%mod=c*1%mod=c
// (p*b)%mod=1 等價於 p*b-(p*b)/mod*mod=1其中要求p,b已知 等價於 ax+by=1
//其中x=p(x就是逆元),y=p/mod,a=b,b=b*mod 那麼調用extend_gcd(b,b*mod,x,y)即可求(a/b)%mod的逆元等價於a*p%mod
int main()
{
__int64 a,b,x,y,c,gcd,mod,p;//ax+by=c
while(cin>>a>>b>>c)
{
gcd=extend_gcd(a,b,x,y);
if(c%gcd){cout<<"無解!"<<endl;continue;}
cout<<"x="<<x*c/gcd<<" y="<<y*c/gcd<<endl;
}
return 0;
}
❺ 用c語言編寫擴展歐幾里德演算法用來求乘法逆元ab=1 mod(n) 要求我輸入b,n,求出a。請編譯運行通過,謝謝啦
這是一個錯誤的演算法啊
❻ 擴展歐幾里得演算法求乘法逆元1234
Q X1 X2 X3 Y1 Y2 Y31 0 4321 0 1 12343 0 1 1234 1 -3 6191 1 -3 619 -1 4 6151 -1 4 615 2 -7 4153 2 -7 4 -307 1075 31 -307 1075 2 309 -1082 14321-1082=3239