【发布时间】:2020-08-03 12:00:18
【问题描述】:
我正在创建一个网络系统,一切正常,除了加密。我正在使用 CipherOutputStream 和 CipherInputStream。所以我已经开始调试......所以我创建了一个单独的应用程序来生成 AES 加密密钥并在 Cipher 中使用它。代码:
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
CipherOutputStream cipherOutputStream = new CipherOutputStream(new OutputStream() {
@Override
public void write(int b) throws IOException {
System.out.println("Test");
System.out.print(((char) b));
}
}, cipher);
cipherOutputStream.write('c');
没有任何东西被打印到控制台中。有谁知道问题出在哪里?
【问题讨论】:
-
您正在使用分组密码的分组模式,在本例中为 AES。在您写入至少 16 个字节之前,它无法执行任何操作。在此之前,数据被缓冲。
-
@Presidenr James K. Polik 抱歉,我对这个有点陌生,所以在将新字节 [16] 写入 CipherOutputStream 之后,一切都应该正常工作吗?
-
我不知道“一切”是什么。
-
这里的根本问题是您忘记关闭密码输出流。
标签: java cryptography