0

我有一个字符串,其中包含来自加密的 2 字节(16 位)ASCII 字符。然后我用这段代码把它写到一个文件中:

String result = encrypt("text"); //some encryption method
FileOutputStream fos = new FileOutputStream(filename);
fos.write(result.getBytes("ISO-8859-15"));
fos.flush();
fos.close();

问题是当我读取文件时,字符串值已经不​​同。下面是我用来读取文件的代码:

InputStream inputStream = new FileInputStream(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "ISO-8859-15"));
String line;
String txt = "";
while ((line = br.readLine()) != null) txt = txt + line;

我发现 String txt 已经不同于 String 结果。我什至做了一个方法来总结字符串中所有字符的 ASCII,发现它不同。而且我不知道我的错误是什么。请帮忙。

4

1 回答 1

1

如果您已对其进行了加密,则您不想将其写为字符串并应用编码。我知道的每种加密方法都将数据视为字节数组。您需要在加密之前和解密之后进行任何字符集转换。在 Java 中,您甚至不应该将加密后的数据保存为字符串,它应该是一个字节数组。

此外,没有 16 位 ASCII 这样的东西。ASCII 是 8 位的。您正在使用某种宽字符数据或 16 位 unicode,而不是 ascii。 http://en.wikipedia.org/wiki/ASCII

于 2013-04-12T06:43:37.300 回答