Tôi cần lưu trữ một danh sách chuỗi các chuỗi trong một tệp bằng cách mã hóa nó. Và sau đó tôi giải mã nội dung tập tin và khôi phục chúng vào một danh sách mảng. Nhưng khi tôi giải mã nội dung, các khối 'Null' nằm bên trong nội dung. Không có khối 'Null', phần còn lại của văn bản giống như tôi được mã hóa.Mã hóa và giải mã một ArrayList <String>
public static void encryptFile(List<String> moduleList, File fileOut) {
try {
OutputStream out = new FileOutputStream(fileOut);
out = new CipherOutputStream(out, encryptCipher);
StringBuilder moduleSet = new StringBuilder();
for (String module : moduleList) {
moduleSet.append(module + "#");
}
out.write(moduleSet.toString().getBytes(Charset.forName("UTF-8")));
out.flush();
out.close();
} catch (java.io.IOException ex) {
System.out.println("Exception: " + ex.getMessage());
}
}
public static List<String> decryptFile(File fileIn) {
List<String> moduleList = new ArrayList<String>();
byte[] buf = new byte[16];
try {
InputStream in = new FileInputStream(fileIn);
in = new CipherInputStream(in, decryptCipher);
int numRead = 0;
int counter = 0;
StringBuilder moduleSet = new StringBuilder();
while ((numRead = in.read(buf)) >= 0) {
counter++;
moduleSet.append(new String(buf));
}
String[] blocks = moduleSet.split("#");
System.out.println("Items: " + blocks.length);
} catch (java.io.IOException ex) {
System.out.println("Exception: " + ex.getMessage());
}
return moduleList;
}
Tôi đã thử với UTF-16 vì chuỗi được mã hóa bằng java trong UTF-16, Nhưng nó chỉ làm cho đầu ra tồi tệ nhất. gợi ý của bạn sẽ được đánh giá cao ... Cảm ơn
Không bao giờ chụp ảnh mã nguồn và đăng chúng. Hoặc là sao chép + dán mã nguồn vào câu hỏi của bạn hoặc dành thời gian để gõ nó lên. – Jeffrey
Vấn đề có thể được đặt tại vị trí (242, 137) – Alex
@ Jeffrey Nếu có thể, tôi sẽ đi với bản sao/dán. Nếu điều đó là không thể bởi vì tôi đã 'trên Kindle' hoặc một số như vậy, tôi có lẽ sẽ trì hoãn hỏi một câu hỏi cho đến khi tôi trở lại máy tính để bàn phát triển. Quá nhiều lỗi leo trong khi (lại) gõ mã. –