Potrzebuję przechowywać listę tablic ciągów w pliku przez jej zaszyfrowanie. Następnie odszyfrowuję zawartość pliku i przywracam do listy tablic. Ale kiedy odszyfrowuję treść, w treści znajdują się bloki "Null". Bez bloków "Null" reszta tekstu jest taka sama, jak kodowana.Szyfrowanie i odszyfrowywanie tablicy 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;
}
Próbowałem z UTF-16, ponieważ ciągi są kodowane w java w UTF-16, ale to tylko sprawia, że wyjście najgorsze. Twoje sugestie będą mile widziane ... Dzięki
Nigdy nie rób zdjęć kodu źródłowego i nie publikuj ich. Kopiuj i wklej kod źródłowy do pytania lub poświęć trochę czasu na jego wpisanie. – Jeffrey
Problem może znajdować się na pozycji (242, 137) – Alex
@Jeffrey Jeśli to możliwe, wybrałabym kopiuj/wklej. Gdyby nie było to możliwe, ponieważ byłem na "Kindle" lub w innym, prawdopodobnie opóźniłbym zadawanie pytań, dopóki nie wróciłem do maszyny programistycznej. Zbyt dużo błędów wkradło się podczas (ponownego) wpisywania kodu. –