2017-03-10 16 views
0

私は自分自身のバージョンのSHA-256でRSA-OAEPを実装しています。私はそれをRSA-OAEPとSHA-256を使ってJavaのCipherクラスの出力と比較してテストしたいと思う。 PKCS#1によると、RSA-OAEPにはラベルが必要です(デフォルトでは空文字列です)。しかし、私は組み込みクラスでラベルを入力する方法を見つけることができません。私の実装は、暗号化と復号化の両方で正しく動作するようですが、Cipherクラスは異なる出力を生成します。 Cipherクラスが使用するデフォルトのラベルはありますか?Javaで組み込みRSA-OAEP暗号化のデフォルトラベルがありますか?

答えて

2

PKCS1v2.1ではラベルLと呼ばれるRSAES-OAEPは、v2.0では符号化パラメータPと呼ばれました。 A.2.1のpSourceAlgorithmの説明を参照してください。 Java APIはおそらく互換性のために古い用語を保持しており、デフォルトは実際には空のオクテット文字列であり、Javaで長さ0のbyte配列として実装されています。https://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/PSource.PSpecified.htmlを参照してください。 P-call-me-Lが空であっても、マスキングの前にDBに入るハッシュは空ではないことに注意してください。

「異なる出力」と言うと、OAEPが(敵対者に情報を漏らさないように)ランダム化されており、同じ平文のすべての暗号化でユニークな暗号文が生成されるはずですが、同じ平文に復号化する必要があります。

関連する問題