Цель этого не очень важна для безопасности, и ключ будет длинным, поэтому я просто хочу использовать простое шифрование XOR для строк.Просто XOR шифрует в Javascript и расшифровывает в Java
Ну, Javascript на клиенте выглядит следующим образом:
function dc_encrypt(str, key)
{
var ord = []; var res = "";
var i;
for (i = 1; i <= 255; i++) {ord[String.fromCharCode(i)] = i}
for (i = 0; i < str.length; i++)
res += String.fromCharCode(ord[str.substr(i, 1)]^ord[key.substr(i % key.length, 1)]);
return(res);
}
И Ява является:
public String dc_decrypt(String str, String key)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++)
sb.append((char)(str.charAt(i)^key.charAt(i % (key.length()))));
return(sb.toString());
}
К сожалению, это производит некоторые очень странные результаты. Некоторые буквы различаются после шифрования в JS, отправки результата через POST и дешифрования на Java. В каждом случае это не кажется надежным.
Я предполагаю, что проблема должна иметь какое-то отношение к кодированию ... кто-то знает более надежное решение для этого?
Огромное спасибо заранее! :)
Можете ли вы предоставить образец ввода и разные выходы в двух реализациях? – RealSkeptic
Попробуйте кодировать ваш зашифрованный вывод с помощью Base64, а затем декодировать его на Java –