栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Node.js和WebCrypto之间的ECDSA签名似乎不兼容?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node.js和WebCrypto之间的ECDSA签名似乎不兼容?

我不能肯定地说没有使用这两个库中的任何一个,但是一种可能性是它们没有为签名使用相同的编码类型。对于DSA / ECDSA,有两种主要格式,IEEEP1363(Windows使用)和DER(OpenSSL使用)。

“ Windows”格式应具有预设的大小(由DS的Q值和ECDSA的P值决定(Windows不支持Char-2,但如果是的话,Char-2ECDSA则可能为M))。然后将

r
s
都用左填充,
0
直到它们达到该长度。

在太小是合法例如

r = 0x305
s = 0x810522
用的sizeof(Q)是3个字节:

// r000305// s810522

对于“ OpenSSL”格式,它按照DER规则编码为SEQUENCE(INTEGER(r),INTEGER(s)),看起来像

// SEQUENCE30  // (length of payload)  0A  // INTEGER(r)  02    // (length of payload)    02    // note the leading 0x00 is omitted    0305  // INTEGER(s)  02    // (length of payload)    04    // Since INTEGER is a signed type, but this represented a positive number,    // a 0x00 has to be inserted to keep the sign bit clear.    00810522

或者,紧凑地:

  • Windows:
    000305810522
  • OpenSSL:
    300A02020305020400810522

“ Windows”格式始终为偶数,且长度始终相同。“ OpenSSL”格式通常大约大6个字节,但是中间可能会增加或丢失一个字节;所以有时候甚至是奇怪

base64解码您的

sig64
值表明它正在使用DER编码。使用WebCrypto生成几个签名;如果没有开始,
0x30
那么您就有IEEE /DER问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号