TweetNaCl 在尝试解密时给出了错误的编码

TweetNaCl gives wrong encoding when trying to decrypt

我正在努力让 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/#/secretbox 但不知何故,我的解密函数给出了错误的编码。

我做错了什么?

编辑:我做了一个 fiddle,其中编码工作正常......我的程序似乎在其他地方有错误。 https://jsfiddle.net/user88593902/t78kb92n/

he.js 库与 TweetNaCl 库冲突。删除它,它开始正常工作。