Rsa
RSA較小的數字手動解決不起作用-我想我犯了一個錯誤
我在這裡嘗試了紙/鉛筆的解釋,在我開始解密之前,它似乎很有意義。這是我的工作:
密鑰創建:
選擇兩個不同的素數p和k:
p = 23 k = 29
通過計算找到n
p * q
:n = 23 * 29 n = 667
通過計算找到z
(p - 1) * (q - 1)
:z = (23 - 1) * (29 - 1) z = 22 * 28 z = 616
選擇一個與z互質的數k:
616 % 2 != 0 616 % 3 = 0 k = 3
公鑰由n和k組成:
Public Key: n = 667 k = 3
找到一個數字j其中
(k * j) % z = 1
:(3 * 411) % 616 = 1 j = 411
j是密鑰:
Private Key: j = 411
加密:
之前的公鑰:
Public Key: n = 667 k = 3
選擇一個數字p進行加密(顯然要求它小於模數n):
p = 13
通過計算得到加密結果E
E = (p ^ k) % n
:(13 ^ 7) % 667 = 492 E = 492
解密:
公鑰:
Public Key: n = 667 k = 3
私鑰:
Private Key: j = 411
加密結果:
Encrypted Integer: E = 492
通過計算恢復整數p
p = (E ^ j) % n
(492 ^ 411) % 667 = 144 p = 144
?:
現在問題來了:我輸入 13 作為p並恢復了 144。起初我以為我搞砸了 modexp 部分,但是當使用來自明尼蘇達大學 modexp calc 的資訊時,我得到了相同的結果。
那麼我是不是在某個地方搞砸了,原來的說明是錯誤的,和/或其他什麼?
更重要的是,如果我搞砸了,我在哪裡搞砸了,如果指令錯誤,哪些指令是錯誤的?
任何幫助表示讚賞。
PS:是的,我知道密鑰太小,無法保證 IRL 的安全;但是,我只是想了解該算法的工作原理。
在加密步驟中,您寫道:
Public Key: n = 667 k = 3 Input: p = 13 Encrypted Integer: E = (p ^ k) % n
然後錯誤計算:
(13 ^ 7) % 667 = 492 ______^_____________
如果你用正確的方法計算它
k = 3
,你會得到E = 196
正確解密的結果13
。(如預期)