我只需要为 ECDSA 获取私钥和公钥对。斯坦福 Javascript 加密库以非标准方式 ( https://groups.google.com/forum/?fromgroups#!topic/sjcl-discuss/UaWUyMWS3Rs ) 执行此操作,这对我来说没用 - 就像制作一个MD5 库可以为其他所有内容提供不同的结果?
是否有在 JavaScript 中使用 ECDSA 的实际工作方式?
我只需要为 ECDSA 获取私钥和公钥对。斯坦福 Javascript 加密库以非标准方式 ( https://groups.google.com/forum/?fromgroups#!topic/sjcl-discuss/UaWUyMWS3Rs ) 执行此操作,这对我来说没用 - 就像制作一个MD5 库可以为其他所有内容提供不同的结果?
是否有在 JavaScript 中使用 ECDSA 的实际工作方式?
jsrsasign 4.0.0 现在支持使用 EC 私钥和公钥进行 ECDSA 签名和验证。
http://kjur.github.io/jsrsasign/
我认为这可以满足您的需求。这是一个演示页面。
首先,您链接到的评论谈论的是 ECDSA 签名的格式,而不是密钥对。其次,这有点误导:
ECDSA 算法的输出是区间 [1, n-1] 中的两个整数。ECDSA 标准 ( FIPS 183-3 ) 没有指定将这对数字编码为字节数组的标准方法。
一种方法是将数字封装在 ASN.1 SEQUENCE 中。这是ANSI X9.62和RFC3278指定的方式。它是 Java 和 (AFAIR) Microsoft CNG/.NET 的标准输出。
另一种方法是用零填充数字,使它们具有相同的字节长度n
,然后将它们连接起来。这是由 PKCS#11 和大多数智能卡实现完成的。
如果我正确阅读了源代码,SJCL 会以第二种方式对 ECDSA 签名进行编码。您可以轻松地将这种格式转换为第一种格式。