TweetNaCl дает неправильную кодировку при попытке расшифровки - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь заставить работать 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= и с nonce XeB7tdP8CB8Y2/aybsK498gCRJz469yM зашифрованный текст будет iFcrAeRqrnhu67zZupYO23UmEC0kl21Dcuo6b33gsg==.

Так что теперь, когда я расшифрую:

Crypto.decrypt('noIIyNy5sH61LdrmChTHW24qAFbNOv1brq9QnR9vsoE=', 'XeB7tdP8CB8Y2/aybsK498gCRJz469yM', 'iFcrAeRqrnhu67zZupYO23UmEC0kl21Dcuo6b33gsg==');

Вывод: ä½ å¥½ï¼ä¸ç вместо исходного ввода 你好,世界.

Вывод работает отлично на этом примере страницы: https://tweetnacl.js.org/#/secretbox но почему-то моя функция дешифрования дает неправильное кодирование.

Что я здесь не так делаю?

РЕДАКТИРОВАТЬ: Я сделал скрипку, где кодирование работает нормально ... Моя программа имеет ошибку где-то еще, чем кажется.https://jsfiddle.net/user88593902/t78kb92n/

1 Ответ

0 голосов
/ 12 февраля 2019
Библиотека

he.js конфликтует с библиотекой TweetNaCl.Сняв его, он начал работать так, как должен.

...