2

まず、この質問は実際にはコードに関連するものではありませんが、コードの背後で何が起こっているのかを理解しようとしています. しばらくの間私を悩ませてきたので、誰かがこれに対する答えを知っていることを願っています.

RSA暗号サービスプロバイダーを使用しているc#でプログラムを書いています。私が理解できることから、クラスは標準でパディングにSHA1を使用しています。パディング中に実際に何が起こるかを理解しようとしてきましたが、プロセスの 1 つのステップに頭を悩ませているようには見えません。

私が現在検討している OAEP のアルゴリズムは、単純に wiki のものです。 http://en.wikipedia.org/wiki/OAEP

私を悩ませているステップは3)です。ハッシュ関数は常に特定の量のビット (SHA1 - 160 ビット) を返すと思っていたので、標準の 1024 キーのビット強度で 864 ビットになる n-k0 にビット量を単純に拡張するにはどうすればよいでしょうか?

4

2 に答える 2

0

特に OAEP の場合、動作する MGF1 と呼ばれるアルゴリズムを使用することをお勧めします。シードとカウンターを繰り返しハッシュし、結果を連結することにより、RfC 2437に基づく spe I 固定が行われます。

RfC テキストから、Zはシード、lは出力の長さです。

3. 0 から {l / hLen}-1 までのカウンターの場合、次の操作を行います。

a. プリミティブ I2OSP を使用して、カウンタを長さ 4 のオクテット文字列 C に変換します: C = I2OSP (counter, 4)

b. シード Z と C のハッシュをオクテット文字列 T に連結します。

T =    T || Hash (Z || C)

4. T の先頭のロクテットをオクテット文字列マスクとして出力します。

于 2013-04-13T02:42:05.593 に答える