3

シナリオは次のとおりです。次のアルゴリズムで RSA を使用してエンコードされた文字列を復号化するために、Javascript で復号化アルゴリズムを実装するように求められます。

  1. 文字列を整数のリスト (4 文字から 1 整数) に変換します。このリストを u[] と呼びます。
  2. u[] 内のすべての要素にこの操作を適用します。e[i] = RSA((u[i]-e[i-1]) mod n), e[-1] = 0
  3. 次に、暗号化された整数 e[] のリストを取得します。

ステップ 2 のテキストによる説明: 最初の要素を暗号化し、暗号化された最初の要素を 2 番目の要素から差し引きます。次に、(モジュロ n) を実行し、結果を暗号化します。そして、このプロセスは残りの数字についても続きます。

問題は復号化部分です。私はこの部分で何時間も立ち往生しています!

u[n] を主語にすることを目標に、方程式を扱いました。

e[i] = RSA((u[i]-e[i-1]) mod n) -- (1)

私たちは知っています:

RSA(x) = x^e mod n -- (2) 
RSA'(x) = x^d mod n -- (3)

したがって、(1) と (3) から

RSA'(e[i]) = (u[i]-e[i-1]) mod n
RSA'(e[i]) + k*i + e[i-1] = u[i]

それから、私たちはkを知らないので、ちょっと立ち往生しています。

だから、私はもう一度試しました:

RSA'(e[i]) = (u[i]-e[i-1]) mod n
(e[i])^d mod n = (u[i]-e[i-1]) mod n

それもどこにも行かないようです...

4

1 に答える 1

0

2 番目のステップはあまり意味がありません。

e[i] = RSA((u[i]-e[i-1]) mod n), e[-1] = 0

つまり、モジュラスはインデックスに依存しません。e[0]getを行うにはモジュロ 0 で何かを計算する必要があり (ゼロで除算するのと同様に無意味です)、e[1]モジュロ 1 で何かを計算する必要があり、その結果は常に 0 になるため、あまり意味がありません。

さらに、nが RSA モジュラスの場合、プレーン テキストの場合は0 <= u[i] < n. これは、逆の 2 番目のステップがちょうど

u[i] = (RSA'(e[i]) + e[i-1]) mod n
于 2013-09-13T07:04:36.483 に答える