Лишние байты при считывании файла
Пишу программу для шифрования текста. В данном примере я шифрую слово. После шифрования сохраняю результат в txt. Когда я хочу расшифровать, то при чтении файла появляются непонятные байты, которые мешают при расшифровке. Кто-то может помочь решить проблему?
public String encryption(String textPath, String textOut){
StringBuilder text = new StringBuilder();
String textBinary = "";
String result = "";
String seq = lfsr.generationM("key.txt", 200000, 1000);
try (BufferedReader reader = new BufferedReader(new FileReader(textPath, StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) {
text.append(line);
}
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
byte[] textBytes = text.toString().getBytes(StandardCharsets.UTF_8);
for (int i = 0; i < textBytes.length; i++) {
textBinary+=String.format(
"%08d", Integer.parseInt(Integer.toBinaryString(textBytes[i] & 0xFF)));
}
System.out.println("Binary representation of the text: " + textBinary);
for (int i = 0; i < textBinary.length(); i++) {
result+= (Character.getNumericValue(textBinary.charAt(i))^Character.getNumericValue(seq.charAt(i)));
}
String s = decoding(result);
writeFile(textOut, s);
return result;
}
public String decoding (String textBinary){
byte [] bytes = new byte[textBinary.length()/8];
int k = 0;
for (int i = 0; i < bytes.length; i ++) {
String byteString = textBinary.substring(k, k + 8);
int charCode = Integer.parseInt(byteString, 2);
k+=8;
bytes[i] = (byte)charCode;
}
writeFile("decode.txt", new String(bytes,StandardCharsets.UTF_8));
return new String(bytes,StandardCharsets.UTF_8);
}
Шифрую слово hello [62, -48, 86, 66, -40] - перед загрузкой в файл получился такой массив байтов [62, -17, -65, -67, 86, 66, -17, -65, -67] - после считывания этого файла