シナリオは次のとおりです。次のアルゴリズムで RSA を使用してエンコードされた文字列を復号化するために、Javascript で復号化アルゴリズムを実装するように求められます。
- 文字列を整数のリスト (4 文字から 1 整数) に変換します。このリストを u[] と呼びます。
- u[] 内のすべての要素にこの操作を適用します。
e[i] = RSA((u[i]-e[i-1]) mod n), e[-1] = 0
- 次に、暗号化された整数 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
それもどこにも行かないようです...