Я перепробовал все, от изменения нескольких переменных до целых чисел, а также пытался искать ответы в Интернете. Я знаю, что RC4 не так уж безопасен, но он нужен мне только для простого проекта.
Проблема заключается в том, когда я пытаюсь зашифровать огромное количество символов текста и когда я его расшифровываю, он возвращает тарабарщину, так как в расшифрованном тексте не совпадает с исходным текстом, поскольку некоторые из них отсутствуют.
Мой код:
var RC4key = "Arc"; //My secret key.
var contentValue = "The-Message"; //My plaintext message that I wish to encrypt.
function rc4Encrypt(key, pt) {
s = new Array();
for (var i = 0; i < 256; i++) {
s[i] = i;
}
var j = 0;
var x;
for (i = 0; i < 256; i++) {
j = (j + s[i] + key.charCodeAt(i % key.length)) % 255;
x = s[i];
s[i] = s[j];
s[j] = x;
}
i = 0;
j = 0;
var ct = '';
for (var y = 0; y < pt.length; y++) {
i = (i + 1) % 255;
j = (j + s[i]) % 255;
x = s[i];
s[i] = s[j];
s[j] = x;
ct += String.fromCharCode(pt.charCodeAt(y) ^ s[(s[i] + s[j]) % 255]);
}
return ct;
}
/*rc4Decrypt is used to decrypt the encrypted text to the original as long as the key is correct.*/
function rc4Decrypt(key, ct) {
return rc4Encrypt(key, ct);
}
/*I am trying to encrypt it and placing the value in "valueEncrypted" variable.*/
var valueEncrypted = rc4Encrypt(RC4key, contentValue);
/*I am outputting the value to the console.*/
console.log(valueEncrypted);
Пожалуйста, не применяйте base64 или любые другие схемы кодирования, так как это не требуется.
Да, я знаю, что могу использовать CryptoJS или другие библиотеки, но я предпочитаю использовать его в vanilla (чистом) JavaScript, так как это требуется для моего проекта, чтобы не использовать никаких зависимостей для достижения этой цели.
Спасибо всем, кто прочитал мой пост и задумался. Я действительно ценю это.