Я пытаюсь выполнить XOR две строки, а затем снова XOR вывод с одной строкой, чтобы получить другую строку. Иногда он работает как ожидалось, но иногда он дает неожиданный результат.XOR двух строк не работает, когда размер строк большой
private static byte[] xorData(byte[] data1, byte[] data2) throws UnsupportedEncodingException{
String l1s=new String(data1);
String l2s=new String(data2);
int l1=data1.length;
int l2=data2.length;
if(l1>l2)
{
while(l1s.length()!=l2s.length()){
l2s=l2s+"0";
}
}
if(l1<l2)
{
while(l1s.length()!=l2s.length()){
l1s=l1s+"0";
}
}
data1=l1s.getBytes();
data2=l2s.getBytes();
System.out.println("data1 len "+data1.length);
System.out.println("data2 length "+data2.length);
byte[] result=new byte[data1.length];
for(int i=0;i<data1.length;i++){
result[i]=(byte)(data1[i]^data2[i%data2.length]);
}
System.out.println("*********final resulttttttt******************* "+new String(result,"UTF-8"));
return result;
}
Аналогичным образом я буду выполнять XOR с выходом вышеописанного метода и первой строки, чтобы получить вторую строку. Примечание. К этому методу я передаю массив байтов вместо передачи String
Почему бы вам преобразовать двоичные данные в строки, чтобы начать? Вы конвертируете его в строки, а затем снова ... это очень странный код. –
байты не являются символами, и наоборот. –
Можете ли вы дать нам некоторый контекст? Чего вы пытаетесь достичь? Каковы ваши ожидаемые результаты? –