1 選擇一對不同的、足夠大的素數p,q。
2 計算n=pq。
3 計算f(n)=(p-1)(q-1)
4 找乙個與f(n)互質的數e,且1安全性方面需注意引數的選取:(建議參考:《應用密碼學》2017版 p156-p157)
1、不同的使用者不能用相同的模數 n,即乙個模數只能乙個人用
2、p 和 q 的差值要大,一般相差幾個 bit ,比如:n 為 1024 bit 時,p 取 508 bit ,q 取 516 bit,如果 n 為 2048 bit,p q 就相差 12 bit 吧
3、p-1 和 q-1 都應有大的素因子,就是說 一般這樣選擇兩個大素數(即先選擇素數 p1 與 p2,使得 p=2p1+1 與 q=2q1+1 也是素數),要選擇這樣的 p 和 q 才好
4、私鑰 d 的選擇,一般要求私鑰 d>=n**0.25
5、更換金鑰,如果私鑰 d 洩露,再在模 n 的情況下重新計算一對金鑰是不佳的選擇,應該必須換新的公鑰 n
6、公鑰 e 不可以太小,否則不安全,一般根據 pkcs#1 的建議,可以選擇 3 或 65537(=2**16+1),選擇 e=3 時,如果遵循 pkcs#1 v2.1 描述的填充方法(oaep),目前仍是安全的
e 一般採用 16 位素數
7、如果 n 是模數,k 為任意正整數,m 是明文,那麼 e!=log(kn+m)(以 m 為底),否則密文和明文是一樣的字串,演算法中最好自動檢測明文等於密文時,提示更換金鑰對或p q
8、e 的選擇應該使其在 mod(q(n)) 的階最大。即存在 i ,使得 e**i ==== 1mod(q(n)),i>=q(n)/2 這樣可以有效抵抗破解,其中,「====」 表示同餘
9、p-1 和 q-1 的最大公因子要小,最好是 2 ,或足夠 小
注:最好先選擇 d(秘鑰) ,再算出 e(公鑰),選乙個大於 p、q,而小於q(n)並較靠近q(n) ,並滿足 (d,q(n))=1(最大公因子)的強素數 d ,之後計算 e,
如果 e 不是很小,也不很大,同時 e!=log(kn+m)(以 m 為底),則 e 為所求,否則重新計算 d,然後再計算 e
1、選擇 p=1018 bit q=1030 bit 左右的大素數
2、大素數 p q 是安全素數 (即 p1 是素數,2p1+1 也是素數,而 p=2p1+1)
3、q(n) 是 n 的尤拉數,q(q(n))>=q(n)/2 (條件2滿足,這個一定滿足,可不看)
4、(p-1,q-1)==2 或 足夠小 ,其中 (a,b) 表示 a 和 b 的最大公因子 (條件2滿足,這個一定滿足,可不看)
5、選乙個強素數 d 大於 p q 小於 q(n) 並較接近 q(n) ,且 d,q(n) 互素,在計算 e
(其中,若 d 為安全素數,大於 p q ,則 d,q(n) 肯定互素)
注:e 最好在 16 bit 左右,不大也不小就行
d>n**0.25 (必須)(條件5滿足,這個一定滿足,可不看)
強素數:即安全素數
另外,當明文等於密文時,程式應有提示
無填充,就是直接對明文進行加密
pkcs1。將資料長度分成金鑰長度-11byte,比如金鑰是1024bit,那麼長度就是1024/8-11=117bytes,具體的格式:先填0,2,然後隨機生成其他的byte,後面才是真正的資料
pkcs1_oaep將資料長度分成金鑰長度-41byte,比如金鑰是1024bit,那麼長度就是1024/8-41=77bytes,先填0,隨機或者是固定的測試向量加20個bytes,然後加20個數字簽名的資料,最後才是資料
sslv23,將資料長度分成金鑰長度-11byte,比如金鑰是1024bit,那麼長度就是1024/8-11=117bytes,具體的格式:先填0,2,填入8個3,填入乙個'\0',最後才是真正的資料。
加解密演算法總結(RSA)
加 密演算法 通常分為對稱性加密演算法和非對稱性加密演算法 rsa演算法基於乙個十分簡單的數論事實 將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。rsa可以實現的功能 rsa數字簽名機制 用私鑰進行簽名,用公鑰進行驗籤。認為私鑰只有可信任對方一家有...
RSA過程總結
一共有6個數字 p,q,n,o n e,d p 質數 q 質數 n 模 特性 p q n,n的長度為金鑰的長度 第一步 計算n的尤拉函式o n p 1 q 1 第二步 隨機選取乙個數e,要求 1加密的原理 傳送加密資訊m必須小於n 加密過程e m m e n,即m的e次方,然後對n取模,得到的餘數就...
RSA攻擊總結
相關概念 什麼是dp dp d mod p 1 推導過程 dp equiv d mod p 1 dp times e equiv d times e mod p 1 d times e k times p 1 dp times e d times e equiv 1 mod p 1 times q ...