AES/CBC暗号化、AES/ECB暗号化後のデータサイズ
2023-10-19 23:46:04
質問
AES暗号化後のデータのサイズを知りたいのですが、主にサイズを知るためにAES暗号化後のデータ(ディスクやメモリ上)をバッファリングしないようにするためです。
私は128ビットAESを使用し
javax.crypto.Cipher
と
javax.crypto.CipherInputStream
で暗号化します。
様々な入力サイズでいくつかのテストを行った結果、以下のように計算された暗号化後のサイズは正しいことがわかりました。
long size = input_Size_In_Bytes;
long post_AES_Size = size + (16 - (size % 16));
しかし、上記の式がすべての可能な入力サイズに適用されるかどうかはわかりません。
暗号化されたデータ(ディスクまたはメモリ)をバッファリングすることなく、AES暗号化適用後のデータサイズを事前に計算する方法はありますか。
どのように解決するのですか?
AESは鍵のサイズに関係なく、ブロックサイズは16バイト固定です。PKCS 5/7のパディングを使用すると仮定して、以下の計算式を使用します。
cipherLen = (clearLen/16 + 1) * 16;
クリアテキストがブロックサイズの倍数である場合、パディングのために全く新しいブロックが必要であることに注意してください。例えば、クリアテキストが16バイトだとします。暗号文は32バイトになります。
IV (Initial Vector) を暗号文と一緒に保存したい場合があります。その場合、IVのためにさらに16バイト追加する必要があります。
関連
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
プロジェクトの依存関係を解決できない。
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
1分でわかる!恋人の写真をIDEAの背景画像に設定する方法【おすすめ集
-
[解決済み] AES暗号化モード(CBC ECB CTR OCB CFB)の選択方法は?
-
[解決済み] Java 256ビットAESパスワードベース暗号化機能
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
Jsoup-Crawlingの動作
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
無効なメソッド宣言
-
java.sql.SQLException: 結果セットの開始前
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。