首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TweetNaCl.js公钥签名示例错误

TweetNaCl.js公钥签名示例错误
EN

Stack Overflow用户
提问于 2021-09-10 12:38:48
回答 1查看 257关注 0票数 0

我想使用ed25519对我的消息进行签名。我找到了具有Signatures方法的TweetNaCl.js来实现我的目标。

通过引用TweetNaCl.js minimal Public-key signatures example和官方文档-Signatures,下面是我的测试代码codesandbox

代码语言:javascript
复制
  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一样。

但我注意到,当我将publicKeyB64signatureB64msgStr放到tweetnacl.js的示例页面(Public-key signatures)中进行验证时,它会响应错误Bad signature length: must be 64 bytes

如果我将secretKeyB64放入示例签名页面,然后单击" sign ",签名似乎比我在Codesandbox的代码中创建的签名更短。

我有什么遗漏的吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-10 13:19:28

我在20分钟后解决了这个问题...谢谢你的StackOverflow ?!!

我通过控制台登录了signature,发现它的长度超过64。在我检查了Signatures之后,我发现了另一个方法nacl.sign.detached(message, secretKey),它的长度是64!

在encodeBase64之后,并将它放到tweetnacl.js的示例页面(公钥签名)来验证它,它工作了!!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69132331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档