0

Javaですでに作成したRSA暗号化プログラムをErlangに再作成しようとしています。ただし、秘密鍵の生成方法がわかりません。私の元のJavaコード:

    privateKey = publicKey.modInverse(phi);

「d」または秘密鍵をオンラインで見つけるための一般的なアルゴリズムが見つかりませんでした。ほとんどの機能は、大規模な問題では実装できない小さな単純な方程式であるか、チュートリアルではプロセスを説明せずに秘密鍵を提供するだけです。秘密鍵の生成方法を学ぶことができるように、誰かが私に指示を与えることができますか? または、Erlang にモジュラー逆関数がある場合は、それが何であるかを示してください。

前もって感謝します

編集: 実際に解く方程式は [e*d mod (phi) = 1] です。e は公開鍵、d は秘密鍵、phi = [p-1][q-1] です。他のすべての変数がわかっているときに、dについて解きたいと思っています

EDIT2: Wolframalpha.com は、d に対して複数の可能な値を返します。それはどのように機能しますか?

4

3 に答える 3

2

crypto または public_key モジュールのどこかにこのようなものが隠されている可能性がありますが、それは公開 API の一部ではありません。

Erlang にはビルトインの big-integer (通常の整数は事実上任意のサイズになる可能性があります) があるため、通常のアルゴリズムの 1 つを実装して値を計算するのは非常に簡単です。

たとえば、拡張ユークリッド アルゴリズムは、再帰関数を使用して実装するのが特に簡単です。

于 2013-10-31T19:46:08.563 に答える
1

逆モジュロのようなものはありません。技術的には、逆モジュロの解は無限にあるからです。

使用可能なバージョンを再作成できる唯一の方法は、モジュロ自体を使用することです

int rest = number%dividor;
int quotient = (number-rest)/dividor;

int modInv = dividor*quotient+rest;
于 2013-10-31T19:00:38.253 に答える