我正在寻找一种方法,给定任何大小的密码,加密我通过流接收的文件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();