Java SunJCEのRSA暗号時のパディングがおかしい?

SunJCEのRSA暗号時のパディングがおかしい感じがする。

以下、Sun Java JDK 1.6.0_06での場合。

Cipher を "RSA/ECB/PKCS1Padding" で初期化。
暗号化するのは、"This is a pen.": as hex "54 68 69 73 20 69 73 20 61 20 70 65 6e 2e"。

cipher.doFinal(PLAIN_TEXT.getBytes())で暗号化して、
それを復号(BigIntegerで計算)した結果が以下の通り。

01 FF FF FF ・・・・・FF FF 00 54 68 69 73 20 69 73 20 61 20 70 65 6e 2e

う~ん、おかしい。前半部分はPKCS1 の paddingのはずなのですが、どうにもおかしい。
PKCS1 の padding であれば、以下のフォーマットのはず。

00 02 [^(00)]{8} [^(00)]* 00 54 68 69 73 20 69 73 20 61 20 70 65 6e 2e

SunJCEのパディングは・・・何だこれ? なんて言うパディングなんだろう・・・
って、その前にPKCS1Paddingを指定しているのに違うやり方してる時点でダメなんだけど。

0 コメント: