我试图读取我的加密文件,并将其解密内容放入列表中,但朝向末尾的一些行随机或半途分裂到新行。任何想法为什么这样做? (在解密方法中)。顺便说一句,缓冲区是1024如果有帮助。将文件解密为列表时分割的行
public Crypto() {
try {
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey key = keyFactory.generateSecret(keySpec);
ecipher = Cipher.getInstance("PBEWithMD5AndDES");
dcipher = Cipher.getInstance("PBEWithMD5AndDES");
byte[] salt = new byte[8];
PBEParameterSpec paramSpec = new PBEParameterSpec(salt, 100);
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
} catch (Exception e) {
}
}
@SuppressWarnings("resource")
public static List<String> decrypt(String file) {
List<String> list = new LinkedList<String>();
try {
InputStream in = new CipherInputStream(new FileInputStream(file), dcipher);
int numRead = 0;
while ((numRead = in.read(buffer)) >= 0) {
list.add(new String(buffer, 0, numRead);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
的这不能是你的实际代码。 'list.add(新的String(缓冲,0,numRead);'声明似乎错过一个右括号 – 2013-03-23 01:15:36
您正在阅读的字符串1024个字节长成'List' - 如果你想读的行你行。将需要使用'BufferedReader'和'的readLine()'方法,所以'新的BufferedReader(新的InputStreamReader(新CipherInputStream(新的FileInputStream(文件),dcipher)))'应该做的伎俩。 – 2013-03-23 01:19:14
太谢谢你了!!!它工作xD。最后我需要什么。 – CBennett 2013-03-23 02:00:17