大きなファイルを AES でチャンクごとに暗号化する
1 回の AES 処理には大きすぎるファイルを、ストリーミングモードでチャンクごとに暗号化し、復号して元に戻します。
- 1
大きなファイル (数百 MB〜GB クラス) では、全体をメモリに読み込んで 1 回の AES 呼び出しで処理するのは現実的ではありません。ファイルを固定サイズのチャンク (例: 1 MiB) に分け、各チャンクに固有の IV を付けて暗号化し、暗号文チャンクを連結してください。
- 2 AES 暗号化ツール →
各チャンクについて: 鍵は (パスフレーズから) 1 回だけ導出し、チャンクごとに新しい IV を生成して暗号化し、そのチャンクの IV || 暗号文を出力します。鍵導出は 1 回で済むよう償却します。
- 3 AES 復号ツール →
復号時は、各 IV || 暗号文チャンクを同じ鍵と IV で復号し、平文チャンクを順に連結します。
- 4 Base64 エンコーダー →
暗号化出力をテキストセーフにする必要がある場合 (JSON やメールへの格納)、各チャンクまたは暗号文全体を Base64 でエンコードします。
- 5
ストリーミングには GCM または CTR モードを使ってください。パディングが不要で、並列暗号化にも対応します。ECB は絶対に使わないでください。認証付きストリーミングには、チャンクごとの GCM、またはファイル全体への encrypt-then-MAC を使います。
よくある質問
- チャンクごとに新しい IV を生成するのはなぜですか?
- 同じ鍵で IV を再利用すると、GCM や CTR モードでは致命的な結果になります。平文の XOR が露見するのです。チャンクごとに新しいランダム IV を生成し (暗号文と一緒に保存) して、これを防ぎます。CBC でも、IV の再利用は最初のブロックの XOR を漏らします。
- 復号したファイルが元と一致することはどう確認しますか?
- 暗号化前に元ファイルの SHA-256 ハッシュを、復号後には結果のハッシュを計算します。ハッシュが一致すれば、往復はロスレスです。改ざん検出のため、ハッシュを暗号文と一緒に保存してください。
このタスクを解決するワークフロー
Ascii85 から Base64 へ変換
Ascii85 をデコードし、より広い互換性のために Base64 として再エンコードする。 パイプライン
Base2048 から Base64 へ変換
Base2048(絵文字)をデコードし、標準転送のために Base64 として再エンコードする。 パイプライン
Base32 から Base64 へ変換
Base32 エンコード文字列を生バイトにデコードし、よりコンパクトな表現のために Base64 として再エンコードする。 パイプライン
Base58 から Base64 へ変換
Base58 をデコードし、標準互換性のために Base64 として再エンコードする。 パイプライン
Base64 エンコード後デコードのラウンドトリップ検証
テキストを Base64 にエンコードし、デコードしてラウンドトリップが元のデータを保持することを検証する。 パイプライン
Blowfish 暗号化後に Base64 エンコード
Blowfish で暗号化し、テキストセーフな転送のために Base64 エンコードする。 パイプライン
DES 暗号化後に Base64 エンコード
DES で暗号化し、レガシー互換性のために Base64 エンコードする。 パイプライン
URL 転送用の JSON ペイロードのエンコード
JSON ドキュメントを URL パラメータ用に準備する: 整形、Base64 エンコード、パーセントエンコード — ネストされたパラメータデコードチェーンの正確な逆順。 パイプライン
AES 暗号化後に Base64 エンコード
平文を AES で暗号化し、テキストセーフな転送のために暗号文を Base64 としてエンコードする。 パイプライン
コンテンツのハッシュと Base64 エンコード
入力のハッシュを計算し、コンパクトな転送のためにハッシュダイジェストを Base64 としてエンコードする。 パイプライン
Hex から Base64 へ変換
Hex 文字列を生バイトにデコードし、コンパクトな転送のために Base64 として再エンコードする。 パイプライン
HMAC 署名後に Base64 エンコード
HMAC 署名を生成し、API 認証ヘッダーのために Base64 エンコードする。 パイプライン
Morse エンコードと Base64 転送
テキストを Morse 符号としてエンコードし、デジタル転送のために Base64 エンコードする。 パイプライン
RC4 暗号化後に Base64 エンコード
RC4 で暗号化し、転送のために Base64 エンコードする。 パイプライン
RIPEMD-160 ハッシュ後に Base64 エンコード
RIPEMD-160 ハッシュを計算し、転送のために Base64 エンコードする。 パイプライン
テキストシャッフルと Base64 エンコード
テキスト文字をシャッフルし、その後結果を Base64 エンコードする。 パイプライン
Unicode エスケープと Base64 エンコード
テキストを Unicode エスケープし、ASCII セーフな転送のために Base64 エンコードする。 パイプライン
URL エンコード後 Base64 二重エンコード
URL エンコードし、API ペイロードの二重エンコードのために Base64 エンコードする。 パイプライン
UUencode 後 Base64 エンコード
テキストを UUencode し、その後結果を Base64 エンコードして二重エンコードする。 パイプライン
UUID 生成と Base64 エンコード
UUID を生成し、コンパクトな保存のために Base64 エンコードする。 パイプライン
関連ツール
AES 暗号化ツール
Encrypt text or binary data with AES (CBC/GCM/ECB) using Web Crypto API。無料、プライベート、100%クライアントサイド。 ツール
AES 復号ツール
Decrypt AES-encrypted data (CBC/GCM/ECB) using Web Crypto API。無料、プライベート、100%クライアントサイド。 ツール
Base64 エンコーダー
Encode text or binary data to Base64 online。無料、プライベート、100%クライアントサイド。 ツール
ハッシュ計算ツール
Compute MD5, SHA-1, SHA-256, or SHA-512 hashes with hex or Base64 output。無料、プライベート、100%クライアントサイド。 ツール