Не могу реализовать метод дешифровки XOR в JAVA

164
22 ноября 2021, 13:40

Задание, зашифровать строку через XOR и записать в фаил а потом прочитать, выполнить дешифровку и вывести в косноль. Метод write реализовал а вот с емтодом read запутался, помогите

package Task2;
import java.io.*;
public class Main {
  public static void main(String[] args) throws IOException {
    FileOutputStream file = new FileOutputStream("src/Task2/1.txt");
    FileInputStream file1 = new FileInputStream("src/Task2/1.txt");
    XorOutputStream xorOutputStream = new XorOutputStream(file);
    XorInputStream xorInputStream = new XorInputStream(file1);
    String text = "Ура";
    xorOutputStream.write(text.getBytes());
    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    byte[] buf = new byte[10];
    int data;
    while ((data = xorInputStream.read(buf)) > 0) {
        bout.write(buf);
    }
    String string = new String(bout.toByteArray());
    System.out.println(string);
}
}
class XorInputStream extends FilterInputStream {
public XorInputStream(InputStream in) {
    super(in);
}
@Override
public int read(byte[] b) throws IOException {
    in.read(b);
    byte[] res = new byte[b.length];
    byte[] bKey = "55".getBytes();
    for (int i = 0; i < b.length; i++) {
        res[i] = (byte) (b[i] ^ bKey[i % bKey.length]);
    }
    return res.length;
}
}
class XorOutputStream extends FilterOutputStream {
public XorOutputStream(OutputStream out) {
    super(out);
}
@Override
public void write(byte[] b) throws IOException {
    byte[] bKey = "55".getBytes();
    byte[] res = new byte[b.length];
    for (int i = 0; i < b.length; i++) {
        res[i] = (byte) (b[i] ^ bKey[i % bKey.length]);
    }
    out.write(res);
}
}
Answer 1

Попробуйте так.

@Override
public int read(byte[] b) throws IOException {
    int l = in.read(b);
    byte[] bKey = "55".getBytes();
    for (int i = 0; i < l; i++) {
        b[i] = (byte) (b[i] ^ bKey[i % bKey.length]);
    }
    return l;
}

Это все равно не правильно, но в вашем случае должно сработать.

READ ALSO
Вывод даты и времени в текстовом виде

Вывод даты и времени в текстовом виде

Есть таблица, где хранится дата в TimeShamp сохраняла так: В частности текущее значение TimeShamp для данной записи 1574610262000

74
Реализовать такой же способ сортировки, только для int

Реализовать такой же способ сортировки, только для int

Есть у меня ObservableList, который с файла сохраняет данные типов String, int, intВсе это добро у меня отображается в TableView

184
JSF + Primeryface как вывести данные на страницу

JSF + Primeryface как вывести данные на страницу

Пытаюсь вывести всех Pet на странице после регистрации пользователя,но не выводится ничегоВопросы к знатокам:

103
ProgressBar 10 секунд

ProgressBar 10 секунд

Всем привет! Подскажите как заставить крутиться ProgressBar n секунд и затем перейти на новый activity ???

195