3

RSACryptoServiceProvider を使用して復号化しようとしていますが、秘密鍵としてモジュラスと d のペアと指数しか持っていません。

RsaParameters 構造体はこれらに対応できません。「不正なキー」という例外を除いて、復号化時に私を拒否します。

私の理解では、このペアは、DQ DP INVERSEQ 部分全体なしで復号化するのに十分です。さらに、pyCrypto を使用した python で見つけた例では、上記の部分のみを使用する RSA.construct メソッドがあります。

.NET フレームワークまたは別のライブラリのクラスで可能ですか? BountyCastle で試してみましたが、うまくいきませんでした。

4

3 に答える 3

2

持っている情報を使用して、欠落しているすべての情報を回復し、RSACryptServiceProvider に必要なすべてのパラメーターを提供できます。始めるために必要なアルゴリズムはこちらです。セクション 8.2.2(i)「因数分解との関係」を参照してください。「一方で」で始まる 3 番目の段落は、素数 p と q を復元するために使用できる単純なアルゴリズムの概要に進みます。これらから、他の値を簡単に復元できます。妥当な BigInteger パッケージが必要です。

于 2010-06-20T15:48:06.377 に答える
1

それはほんの少しの数学です;)

k = c^d mod N

k は平文
メッセージです c は chiffre です
d はあなたの秘密鍵
です N はあなたのモジュラスです


Java では、次のようになります。

BigInteger c = ...
BigInteger d = ...
BigInteger n = ...
BigInteger k = c.modPow(d, n);

C#に同等のものがあることを願っています。

于 2010-06-20T14:29:26.013 に答える
0

.NET フレームワークでそれを行うことができない場合、私はずっと前に RSA 暗号化変換を手動で実行するプログラムを C++ で作成し (多少の努力で C# に変換できる場合があります)、ソース コードを確認しました。 pとqを提供せずに秘密鍵(d)を使用して動作する必要があるようです。http://sourceforge.net/projects/bmrsa/にあります。

于 2010-06-20T14:05:43.590 に答える