任意のサイズのパスワードを指定して、ストリーム経由で受信しているファイルを暗号化する方法を探していますAES
。簡単に始められるように、暗号化されたメッセージをファイルに書き込もうとしました。しかし、私は問題を抱えています:
- 任意のサイズのパスワードを定義できるようにしたいと考えています。「標準」形式でそれを達成することは可能ですか、それともパスワードを 2^k サイズにパディングする必要がありますか? 現在、一時的な「aaaaaaaaaaaaaaaa」パスワードを提供する問題を回避していますが、できるだけ早く削除したいと考えています。
- に長い文字列を書き込もうとすると
cos
、暗号化されたものがファイルに書き込まれます。しかし、「abc」のように小さいものを試してみると、何も書き込まれません。いくつかのパディング オプションを試してみましたが、役に立たないようです (PKCS5Padding、SSL3Padding、NoPadding)。
私が使用しているコードは次のとおりです。
SecretKeySpec localSecretKeySpec = new SecretKeySpec("aaaaaaaaaaaaaaaa".getBytes(), "AES");
Cipher localCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
localCipher.init(Cipher.ENCRYPT_MODE, localSecretKeySpec);
CipherOutputStream cos = new CipherOutputStream(new FileOutputStream("abc"), localCipher);
IOUtils.write("abc", cos);
cos.flush();