RSA

RSA暗復号と電子署名のお試し演算をします。
暗復号は1回のべき剰余演算で演算できる値まで、電子署名のデータ長は(ファイルから)32kバイトまで入力できます。
primitive暗号化では、データが鍵長より短い場合、勝手に上位バイトに00をpaddingします。
 鍵が不正な場合、エラーになります。

 このボタンを押すと、暗号鍵を生成して表示します:鍵長bit
 このボタンを押すと、演算を開始します。

演算 暗号化   復号   電子署名   署名検証(復号のみ)
パディング primitive   PKCSv1.5   OAEP or PSS
ハッシュ関数 MD5   SHA1   SHA256   SHA512
鍵表記 16進数     10進数     ASN.1
n / モジュラス  
d / 秘密鍵
e / 公開鍵
p
q
d mod (p-1)
d mod (q-1)
qInv
入力 16進数    10進数   文字列   ファイル
出力 HEXダンプ HEX空白区切り HEXカンマ区切り C言語形式 10進数

参考)鍵長と暗号化可能な値の関係

パディング ハッシュ関数 平文の範囲
primitive - 0~n-1まで
PKCS#1v1.5 - 鍵長÷8-11 バイトまで
OAEP MD5 鍵長÷8-34 バイトまで
SHA1 鍵長÷8-42 バイトまで
SHA256 鍵長÷8-66 バイトまで
SHA512 鍵長÷8-130 バイトまで

復号の場合、暗号文の範囲は、0~n-1までです。
署名の場合、制限はありません。


署名検証を指定すると、署名を復号した結果を返します(署名検証はしません)。

パディング 出力する値
primitive 署名を公開鍵でべき剰余(復号)した値
PKCS#1v1.5 復号後、パディングを除去した値(元データのハッシュ値)
PSS 復号したsaltと署名内のハッシュ値(M’)
PSSの場合、ハッシュ演算を2回行なうので、M’は、元データのハッシュ値とは一致しません。元データのハッシュ値をmHashとすると、
M’=HASH(00 00 00 00 00 00 00 00 || mHash || salt) を検証することで署名検証が行えます。