TweetNaCl.js Пример подписи с открытым ключом err

Я хочу использовать ed25519 для подписи своего сообщения. И я нашел TweetNaCl.js, в котором есть метод для достижения моей цели.

Ссылаясь на пример минимального открытого ключа TweetNaCl.js и официальный документ - подписейПодписи , вот мой тестовый код codeandbox.

        const keyPair = nacl.sign.keyPair();
  const secretKey = keyPair.secretKey;
  const publicKey = keyPair.publicKey;
  const secretKeyB64 = encodeBase64(secretKey);
  const publicKeyB64 = encodeBase64(publicKey);
  console.log("secretKeyB64", secretKeyB64);
  console.log("publicKeyB64", publicKeyB64);

  const msgStr = "My unencrypted message";
  const msg = decodeUTF8(msgStr);
  const signature = nacl.sign(msg, secretKey);
  const signatureB64 = encodeBase64(signature);
  console.log("signatureB64", signatureB64);
  const verifiedMsg = nacl.sign.open(signature, publicKey);
  console.log(encodeUTF8(verifiedMsg));

В encodeUTF8(verifiedMsg)журнал консоли не кажется проблемой и такой же, как.

Но я замечаю, что когда ставлю publicKeyB64, signatureB64, а также msgStrна страницу примера tweetnacl.js ( подписи с открытым ключом ), чтобы проверить его, он отвечает ошибкой Bad signature length: must be 64 bytes.

Если я поставлю secretKeyB64 на страницу с примером подписи и нажмите «Подписать», подпись кажется короче, чем то, что я создал из кода Codesandbox.

Я что-то пропустил?

1 ответ

Я решил эту проблему через 20 минут ... Спасибо за StackOverflow?!!

Я консоль регистрирую signatureи обнаружил, что его длина превышает 64. После просмотра подписей я нашел другой метод nacl.sign.detached(message, secretKey) а его длина была 64!!!

После encodeBase64 и помещения его на страницу примера tweetnacl.js(подписи с открытым ключом), чтобы проверить его, он работает !!

Другие вопросы по тегам