RC4 復号(レガシー)
RC4(ARC4)の暗号文を 16 進の鍵、または OpenSSL 互換のパスフレーズ(Salted__ 形式)で復号。Base64 か 16 進の入力、テキストか 16 進の出力に対応し、すべてローカルで処理します。
出力は Base64 の OpenSSL「Salted__」形式です(8 バイトのランダムなソルト+暗号文)。鍵と IV はパスフレーズとソルトから導出されるため、同じテキストでも毎回結果が変わります。同等のコマンド:
OpenSSL と同様に、パスフレーズから 128 ビットの RC4 鍵を導出します。CryptoJS.RC4 はパスフレーズ使用時に 256 ビット鍵を使うため、その出力はここでは復号できません。
openssl enc -rc4 -d -md md5 -a -A -provider legacy -provider default -k '…'すべてブラウザ内で実行されます。データがアップロードされることはありません。
RC4 復号とは?
RC4 ストリーム暗号で暗号化されたデータを復号します。16 進の鍵による生の暗号文にも、パスフレーズ付きの OpenSSL Salted__ Base64 形式にも対応します。RC4 は対称なので、復号では同じ鍵ストリームを再生成してもう一度 XOR します。
RC4 復号の使い方
- 暗号化に使った 鍵の指定方法 を選び、パスフレーズまたは 16 進の鍵を入力します。
- 暗号文 を Base64 または Hex で貼り付けます。
- 復号 をクリックして平文を確認します(バイナリデータなら Hex 出力に切り替えます)。
例
U2FsdGVkX18CT09IGrybf6B10S7HfLfYRy4mwTI= (passphrase "secret")
Hello, World!
openssl enc -rc4 -md md5 -a -k secret で生成。
RC4 復号を使うべき場面
レガシーな RC4 データの読み取りやテストベクターの確認に使ってください。鍵が違っても黙ってランダムなバイト列が出るため、結果が妥当か確認してください。
RC4 復号の仕組み
鍵(生の鍵、または OpenSSL と同様にパスフレーズとソルトから EVP_BytesToKey MD5 / PBKDF2-SHA256 で 16 バイトに導出したもの)が RC4 の状態を初期化し、生成された鍵ストリームを暗号文と XOR します。RC4 にはパディングがないため、誤った鍵を直接は検出できません。ツールは有効な UTF-8 でない出力を報告し、16 進で表示できます。
一般的な使用例
- ARC4 を使うレガシーソフトウェアの値を復号する
- RFC 6229 の鍵ストリームテストベクターを確認する
-
openssl enc -rc4が生成したデータを読む - ストリーム暗号の XOR の性質を教える
セキュリティ注意事項
RC4 は破られています。鍵ストリームには強い統計的偏りがあり、TLS では RFC 7465 で禁止されています。完全性保護もありません。レガシーデータにのみ使ってください。
よくある質問
出力が読めるテキストにならないのはなぜですか?
鍵が間違っているか(RC4 自体は判別できません)、平文がバイナリです。出力のエンコーディングを Hex に切り替えてバイト列を確認してください。
RC4 の復号は暗号化と違いますか?
いいえ、同じ XOR 操作です。このページは復号用に項目名を付け替え、Base64 か 16 進の入力を受け付けるだけです。
RC4-drop に対応していますか?
いいえ。OpenSSL、CryptoJS(生の鍵)、多くのライブラリが使う通常の RC4 のみ対応します。