Я новичок в java, но я очень свободно владею C++ и C#, особенно C#. Я знаю, как сделать xor шифрование как на C#, так и на C++. Проблема заключается в том, что алгоритм, который я написал в Java для реализации шифрования xor, по-видимому, приводит к неправильным результатам. Результаты, как правило, представляют собой кучу пробелов, и я уверен, что это неправильно. Вот класс ниже:Моя реализация класса XOR шифрования XOR пошла не так
public final class Encrypter {
public static String EncryptString(String input, String key)
{
int length;
int index = 0, index2 = 0;
byte[] ibytes = input.getBytes();
byte[] kbytes = key.getBytes();
length = kbytes.length;
char[] output = new char[ibytes.length];
for(byte b : ibytes)
{
if (index == length)
{
index = 0;
}
int val = (b^kbytes[index]);
output[index2] = (char)val;
index++;
index2++;
}
return new String(output);
}
public static String DecryptString(String input, String key)
{
int length;
int index = 0, index2 = 0;
byte[] ibytes = input.getBytes();
byte[] kbytes = key.getBytes();
length = kbytes.length;
char[] output = new char[ibytes.length];
for(byte b : ibytes)
{
if (index == length)
{
index = 0;
}
int val = (b^kbytes[index]);
output[index2] = (char)val;
index++;
index2++;
}
return new String(output);
}
}
не все символы могут быть напечатаны – gd1
Зашифрованные данные должны обрабатываться как двоичные, его текст больше не является. –
если вы зашифруете, то расшифруете текст, будет ли он правильно выводиться? –