Javascript ECDSA是否获取私钥和公钥?

Javascript ECDSA是否获取私钥和公钥?,javascript,cryptography,ecdsa,Javascript,Cryptography,Ecdsa,我所需要的就是为ECDSA获得一个私钥和公钥对。斯坦福Javascript加密库以一种非标准的方式()实现了这一点,而这对我来说毫无用处——比如说,制作一个MD5库给其他所有东西带来不同的结果有什么意义 在javascript中使用ECDSA是否有一种切实可行的方法?首先,您链接到的注释讨论的是ECDSA签名的格式,而不是密钥对。第二,这有点误导: ECDSA算法的输出是间隔[1,n-1]内的两个整数。ECDSA标准()没有指定将这对数字编码为字节数组的标准方法 一种方法是将数字封装在ASN.1

我所需要的就是为ECDSA获得一个私钥和公钥对。斯坦福Javascript加密库以一种非标准的方式()实现了这一点,而这对我来说毫无用处——比如说,制作一个MD5库给其他所有东西带来不同的结果有什么意义


在javascript中使用ECDSA是否有一种切实可行的方法?

首先,您链接到的注释讨论的是ECDSA签名的格式,而不是密钥对。第二,这有点误导:

ECDSA算法的输出是间隔[1,n-1]内的两个整数。ECDSA标准()没有指定将这对数字编码为字节数组的标准方法

一种方法是将数字封装在ASN.1序列中。这是和指定的方式。它是Java和(AFAIR)Microsoft CNG/.NET的标准输出

另一种方法是用零填充数字,使它们具有与
n
相同的字节长度,然后将它们串联起来。这是由PKCS#11和大多数智能卡实现完成的


如果我正确阅读了源代码,SJCL将以第二种方式对ECDSA签名进行编码。您可以轻松地将此格式转换为第一种格式。

jsrsasign 4.0.0现在支持使用EC私钥和公钥进行ECDSA签名和验证

我认为这符合你的需要。 这是一个演示页面


基本上我会远离SJCL。原因很简单:已经发现了多个类似的问题——包括非常严重的验证错误,尽管Mike似乎知道他在说什么,但该库的测试还不够好,无法使用加密库。我会认真尝试通过使用SSL(用于基于浏览器的加密)或包装器库(用于“本地”开发)来解决问题。请注意,我编写了一个Java兼容性库,因此我更愿意推广该软件。是的,它可以轻松地将2个二进制八位字符串转换为两个有符号整数,并以相对简单的BER格式包装(带有两个整数的序列)。但是请好好测试一下,因为这种转换经常出错。