Rsa

RSA較小的數字手動解決不起作用-我想我犯了一個錯誤

  • July 28, 2021

我在這裡嘗試了紙/鉛筆的解釋,在我開始解密之前,它似乎很有意義。這是我的工作:

密鑰創建:

選擇兩個不同的素數pk

p = 23
k = 29

通過計算找到np * 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

公鑰由nk組成:

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

通過計算得到加密結果EE = (p ^ k) % n

(13 ^ 7) % 667 = 492
E = 492

解密:

公鑰:

Public Key:
n = 667
k = 3

私鑰:

Private Key:
j = 411

加密結果:

Encrypted Integer:
E = 492

通過計算恢復整數pp = (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

(如預期)

引用自:https://crypto.stackexchange.com/questions/10098