TweetNaCl дает неправильную кодировку при попытке расшифровки
Я пытаюсь заставить работать TweetNaCl.js.
Моя проблема в том, что когда я расшифровываю данные, вывод кодируется неправильно.
Зашифрованные данные:
你好,世界
Расшифрованные данные:
ä½ å¥½ï¼ä¸ç
Вот моя функция расшифровки:
Crypto.decrypt = function(key, nonce, ciphertext) {
var message, box;
try {
key = nacl.util.decodeBase64(key);
nonce = nacl.util.decodeBase64(nonce);
} catch(ex) {
alert('Error decoding');
return;
}
try {
box = nacl.util.decodeBase64(ciphertext);
} catch(ex) {
alert('Cannot decode box');
return;
}
message = nacl.secretbox.open(box, nonce, key);
if (message === false) {
alert('Failed to decrypt');
return;
}
try {
message = nacl.util.encodeUTF8(message);
console.log(message);
} catch(ex) {
alert('Cannot decode decrypted message to string');
return;
}
return message;
}
Так что, если я зашифрую текст 你好,世界
с ключом noIIyNy5sH61LdrmChTHW24qAFbNOv1brq9QnR9vsoE=
и с одноразовым XeB7tdP8CB8Y2/aybsK498gCRJz469yM
зашифрованный текст будет iFcrAeRqrnhu67zZupYO23UmEC0kl21Dcuo6b33gsg==
,
Так что теперь, когда я расшифровываю
Crypto.decrypt('noIIyNy5sH61LdrmChTHW24qAFbNOv1brq9QnR9vsoE=', 'XeB7tdP8CB8Y2/aybsK498gCRJz469yM', 'iFcrAeRqrnhu67zZupYO23UmEC0kl21Dcuo6b33gsg==');
Выход: ä½ å¥½ï¼ä¸ç
вместо оригинального ввода 你好,世界
,
Вывод работает отлично на этом примере страницы: https://tweetnacl.js.org/, но почему-то моя функция расшифровки дает неправильное кодирование.
Что я здесь не так делаю?
РЕДАКТИРОВАТЬ: Я сделал скрипку, где кодирование работает нормально... Моя программа имеет ошибку где-то еще, чем кажется. https://jsfiddle.net/user88593902/t78kb92n/
1 ответ
Библиотека he.js конфликтовала с библиотекой TweetNaCl. Сняв его, он начал работать так, как должен.