私は、任意のサイズのパスワードを指定すると、ストリーム上で受信しているファイルをAES
で暗号化する方法を探しています。物事をより簡単に始めるために、暗号化されたメッセージをファイルに書き込もうとしていました。しかし、私は問題を抱えています:CipherOutputStream + 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();