2012-06-14 10 views
6

でテキストをカット。 IVの長さは16バイトです。AES暗号化はノーパディング</p> <p>「<strong>AES/CFB/NoPadding</strong>」でCFBモードでAESを使用して、データをファイルから読み込み、暗号化しようとしていますCFBモード

デフォルトでAESが16バイトブロックで動作するとすれば、CBCや他のどのモードを使用していてもCFBを使用していた場合、パディングスキームを使用すると思います。 CFBは本質的に平文のためのパディングを必要としません。

したがって、ファイルに16バイト未満のデータが含まれていると、何も暗号化されないという問題があります。 16バイトより大きい場合、最初の16バイトだけが暗号化されます。

これは、ブロックサイズがキックインされていることと、バイトw.r.tのアンダーフローまたはオーバーフローがあることを明確に示しています。ブロックサイズの場合、そのデータ/バイトは破棄されます。

私が理解できないことは、CFBを使用している間にデータを埋め込む必要がないということです。それでは、AESの16byteのデフォルトブロックサイズが動作し、データが切り捨てられるのはなぜですか?

+1

暗号化に使用しているコードを投稿してください。 – Robert

答えて

4

このモードでフィードバックするビット数を指定できませんでした。したがって、デフォルトの128ビットを取得しています。あなたが8ビットを必要とするように思えます。そのためには、getInstance()に次の引数を使用する必要があります。

Cipher.getInstance("AES/CFB8/NoPadding"); 
関連する問題