Java 写入我的密码流不会写入我的ByteArrayOutputStream
我试图在测试环境中编写一个方法,以便在我的项目中使用它之前让它工作。此方法应获取一个字符串,将其转换为字节(使用UTF-8字符集),通过AESJava 写入我的密码流不会写入我的ByteArrayOutputStream,java,encryption,stream,aes,Java,Encryption,Stream,Aes,我试图在测试环境中编写一个方法,以便在我的项目中使用它之前让它工作。此方法应获取一个字符串,将其转换为字节(使用UTF-8字符集),通过AESCipherOutputStream运行它,然后将其重新分割成一个字符串(同样使用UTF-8) 我的问题是,我并不真正理解这些流是如何工作的。我见过从一个文件转到另一个文件的例子,但这不是我想要的。我使用的不是FileOutputStream,而是ByteArrayOutputStream;然而,它似乎从来没有给那个流任何东西,因为当我读它的时候,它是空的
CipherOutputStream
运行它,然后将其重新分割成一个字符串(同样使用UTF-8)
我的问题是,我并不真正理解这些流是如何工作的。我见过从一个文件转到另一个文件的例子,但这不是我想要的。我使用的不是FileOutputStream
,而是ByteArrayOutputStream
;然而,它似乎从来没有给那个流任何东西,因为当我读它的时候,它是空的
String encrypt(String raw)
{
String encrypted = "";
ByteArrayOutputStream out = new ByteArrayOutputStream();
CipherOutputStream cipherStream = new CipherOutputStream(out, this.a);
try
{
cipherStream.write(raw.getBytes(Charset.forName("UTF-8")));
encrypted += new String(out.toByteArray(), Charset.forName("UTF-8"));
out.close();
cipherStream.close();
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return encrypted;
}
请忽略所有丑陋的通用catch块——稍后我将正确处理异常。(不,我现在没有任何例外。)
我假设密码流会对字节进行加密,然后将它们写入构造函数中提供的流中,但出于某种原因,它只是将它们吸进,而从不将它们返回
你知道我在哪里搞砸了吗?有几件事不对:
byte[] encrypted = this.a.doFinal(raw.getBytes(StandardCharsets.UTF_8));
谢谢另外,我实际上不会使用返回字符串的方法。我这样做只是为了把它打印出来看看。
byte[] encrypted = this.a.doFinal(raw.getBytes(StandardCharsets.UTF_8));