記錄一下自己的學習過程啦~~
上題目【問題描述】
rsa 是一種經典的加密演算法。它的基本加密過程如下。
首先生成兩個質數 p, q,令 n = p · q,設 d 與 (p − 1) · (q − 1) 互質,則可
找到 e 使得 d · e 除 (p − 1) · (q − 1) 的餘數為 1。
n, d, e 組成了私鑰,n, d 組成了公鑰。
當使用公鑰加密乙個整數 x 時(小於 n),計算 c = xd mod n,則 c 是加
密後的密文。
當收到密文 c 時,可使用私鑰解開,計算公式為 x = ce mod n。
例如,當 p = 5, q = 11, d = 3 時,n = 55, e = 27。
若加密數字 24,得 243 mod 55 = 19。
解密數字 19,得 1927 mod 55 = 24。
現在你知道公鑰中 n = 1001733993063167141, d = 212353,同時你截獲了
別人傳送的密文 c = 20190324,請問,原文是多少?
1.已知n、d、c,求x( x =ce mod n)
2.要求x需求e
3.結合已知條件,若要求e需求d與e的關係:(de-1)%[(p-1)(q-1)]==0
4.若要求e、d間關係需求p、q
5.p、q即為n的質因數
資料較大時,這**跑的著實的慢,還沒想好怎麼優化
public
class
main
} x=math.
pow(c,d)
%n; system.out.
println
("x="
+x);
}public
static
long
pq(long n,
long d,
long
a)} a[0]
=i; a[1]
=n/i;
system.out.
println
("p="
+a[0])
; system.out.
println
("q="
+a[1])
;return a;
}public
static
boolean
zhishu
(long x)
}return y;
}public
static
boolean
huzhi
(long a,
long b)
if(a==1)
return
true
;else
return
false;}
}
1.互質
定義:兩個或多個整數的公因數只有1的非零自然數。公因數只有1的兩個非零自然數,叫做互質數。2.求乙個數的質因數判斷:用大數除以小數,如果除得的餘數與其中較小數互質,則原來兩個數是互質數。
public
intpq
(int n,
int[
] a)
} a[0]
=i; a[1]
=n/i;
return a;
}public
boolean
zhishu
(int x)
}return y;
}
3.判斷兩個數是否互質
private
static
boolean
get(
int n,
int m)
if(n==1)
return
true
;return
false
;}
第十屆藍橋杯 JavaA 迷宮
法一 思路 bfs,path記錄路徑。1.程式設計 2.觀察 description todo author frontier time 2019年4月9日 上午11 19 05 class node public class d迷宮 增量陣列,方向向量,直接按字典序排列 static int y ...
第十屆藍橋杯c組
求和 1905111 這裡的string npos可以使用 1代替 include include using namespace std intmain cout 矩形切割 21 include include using namespace std intmain cout 年號字元 byq i...
2019第十屆藍橋杯C C
這是我第一次參加藍橋杯比賽,比完後,有點低於預期,自己的發揮低於預期,賽事水準也低於預期。教室裡面很多同學的電腦出現問題,舉辦學校也沒有完善的應急方案,有一部分同學11點鐘才可以做題。提取碼 560f1.給20個球員擔任五個不同位置的得分,要你選五個球員組成一支球隊的最大得分。這道題要是全排列做的話...