Toolonit
  1. ホーム
  2. 暗号化
  3. RSA暗号化 / 復号

RSA暗号化・復号ツール

RSA公開鍵で暗号化し、秘密鍵で復号します(OAEPまたはPKCS#1 v1.5)。

パディング

暗号化に使ったのと同じパディングで復号してください。現在の標準はOAEP(SHA-256)で、PKCS#1 v1.5は古いシステム専用です。

出力形式
OpenSSLでこれを復号(.binファイル):
openssl pkeyutl -decrypt -inkey private.pem -in ciphertext.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

短い秘密情報を相手のRSA公開鍵(または証明書)で暗号化して、秘密鍵の持ち主だけが読めるようにしたり、自分の秘密鍵で暗号文を復号したりできます。パディングはOAEP(SHA-256、推奨)、OAEP(SHA-1)、PKCS#1 v1.5から選べ、結果はBase64かhexで、OpenSSLとそのままやり取りできます。すべてブラウザ内で動作するため、鍵もメッセージも端末の外に出ることはありません。無料で登録も不要です。

RSAで暗号化・復号する方法

  1. 「暗号化」か「復号」を選び、鍵を貼り付けるか鍵ファイルを開きます。暗号化には公開鍵か証明書、復号には秘密鍵(PKCS#8またはPKCS#1)を使います。
  2. パディングを選びます。相手がほかの方式を必要としていなければ、「OAEP · SHA-256」です。
  3. メッセージを入力するか、暗号文をBase64かhexで貼り付けます。結果は入力に合わせて表示されます。
  4. 結果をコピーするか、OpenSSL用に暗号文を.binファイルでダウンロードします。

主な機能

  • 公開鍵、証明書、秘密鍵の公開部分で暗号化し、秘密鍵で復号
  • OAEP(SHA-256、初期設定)、OAEP(SHA-1)、PKCS#1 v1.5
  • PEMまたはDERの鍵:SPKI、PKCS#1、PKCS#8、X.509証明書(最大16384ビット)
  • 暗号文はBase64・hex、または.binファイルで出力。貼り付けたBase64・hexや、開いた.binファイルを復号
  • 鍵とパディングで暗号化できるバイト数と、対応するopenssl pkeyutlコマンドを表示
  • ブラウザ内のWebAssemblyワーカーで動作

プライバシーは守られますか?

はい。暗号化と復号はブラウザ内のWebAssemblyワーカーで行われます。鍵、メッセージ、暗号文がアップロードや保存されることはありません。

よくある質問

メッセージはどのくらいの長さまで暗号化できますか?

RSAで暗号化できるのは1ブロックだけです。2048ビットの鍵なら、OAEP SHA-256で190バイト、OAEP SHA-1で214バイト、PKCS#1 v1.5で245バイトまでで、鍵が大きいほど長くなります。それより長いデータは共通鍵暗号で暗号化するか、「ファイル暗号化」を使ってください。

暗号文が毎回違うのはなぜですか?

どのパディングも暗号化の前にランダムなバイトを加えるため、同じメッセージでも毎回新しい暗号文になります。これは設計どおりの動作で、どの暗号文も同じメッセージに復号されます。

OpenSSLと互換性はありますか?

はい。ここで作った暗号文は openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256(またはrsa_padding_mode:pkcs1)で復号でき、openssl pkeyutl -encryptで作った暗号文もここで復号できます。両側で同じパディングを使ってください。

どの形式の鍵を使えますか?

PEMの公開鍵(BEGIN PUBLIC KEYまたはBEGIN RSA PUBLIC KEY)、証明書、そして暗号化されていないPKCS#8(BEGIN PRIVATE KEY)またはPKCS#1(BEGIN RSA PRIVATE KEY)の秘密鍵で、DERファイルにも対応しています。パスワードで保護された鍵やOpenSSHの鍵は先に変換が必要で、その方法はツールが表示します。

復号に失敗するのはなぜですか?

たいていはパディングか鍵が原因です。暗号化に使ったのと同じパディングで、使われた公開鍵と対になる秘密鍵で復号してください。ツールは意図的にどれが原因かを区別しないので、ほかのパディングも試してみてください。暗号文は常に鍵と同じ長さ(2048ビットの鍵なら256バイト)なので、それより短ければコピーのときに途中で切れています。

関連ツール