0
我有一个字符串,其中包含加密的2个字节(16位)ASCII字符。 后来我把它写入一个文件与此代码:Android - 写入/读取文件的编码
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;
我发现字符串TXT比字符串结果已经不同。我甚至提出了一个方法来将字符串中的所有字符的ASCII字符相加,并发现它不同。 我不知道我的错误是什么。请帮忙。
感谢您的回复。实际上,我前面提到的16位ASCII就像是将** char **改为** long **。我使用** long **数据类型来处理我的整个加密(因为我的加密使用256位密钥,而** byte **数据类型不能处理那么长)。那么我应该怎么做,如果我的加密已经在**长**完成? – falcon
首先,我希望如果你正在编写自己的加密,那么这是一个学习练习。加密规则#1不要写你自己的,除非你是专家。无论如何,加密算法(至少我所知道的所有算法)都是将字节数组作为输入和输出,而不是字符串。这些字节可能包含文本字符串,但该算法在该级别不起作用。您应该在字符串上调用.toByteArray,对数据进行加密,然后将其用作您的密文。在解码时解码它,然后再次将该数组转换为字符。 –
只要加密工作,我认为使用** byte [] **或** String **进行加密并不重要。但是在将它写入文件之前,我应该如何处理字符串密文?如果密文必须是** byte [] **,是不是String.getBytes()已经解决了这个问题?但现实,这不是......我不知道为什么。 – falcon