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(подписи с открытым ключом), чтобы проверить его, он работает !!