我想使用 ed25519 来签署我的消息。我发现 TweetNaCl.js 有Signatures方法来实现我的目标。
通过引用TweetNaCl.js 最小公钥签名示例和官方文档-签名,这是我的测试代码代码框。
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)
控制台日志似乎没有问题,与msgStr
.
但是我注意到,当我将publicKeyB64
、signatureB64
和放入msgStr
tweetnacl.js 的示例页面(公钥签名)以验证它时,它会响应 error Bad signature length: must be 64 bytes
。
如果我将其secretKeyB64
放入示例签名页面,然后单击“签名”,则签名似乎比我从 Codesandbox 的代码中创建的要短。
有什么我错过的吗?