解析加密ECDH公钥为JWK格式,以使用它与WebCrypto
Parsing crypto ECDH public key into JWK format to use it with WebCrypto
我生成了一个ECDH密钥对,并从中获得了公钥。使用nodejs和加密库。
const ecdh = crypto.createECDH('secp384r1');
ecdh.generateKeys();
const publicKey = ecdh.getPublicKey('hex');
我正在实现一个客户端库,使用此公钥,ECDH算法和WebCrypto的SubtleCrypto接口加密数据。
要完成这一点,我必须导入公钥(用nodejs加密生成),WebCrypto importKey方法有一些格式选项可以做到这一点,但我可以让它与非它们一起工作。我注意到jwk
比其他的更常用。
jwk
的一个例子是
{
kty: "EC",
crv: "P-256",
x: "kgR_PqO07L8sZOBbw6rvv7O_f7clqDeiE3WnMkb5EoI",
y: "djI-XqCqSyO9GFk_QT_stROMCAROIvU8KOORBgQUemE",
d: "5aPFSt0UFVXYGu-ZKyC9FQIUOAMmnjzdIwkxCMe3Iok",
ext: true,
}
那么我如何将我的公钥解析为jwk
对象。我的公钥是这样的:04f8b2a6e9d2ffa424c3e7b6addf23112153920fd0209390da460f99e03bf8665052e72df4a0b7927381f1b026c98a3a2b348fdd10969875e6b0e86cb1f093a5fc07e49fbbbf091922ce71af17f4a79de03f6069836a7143b137be34451f162235
我没有一个直接的答案给你,但你可能想看看https://github.com/PeculiarVentures/node-webcrypto-ossl,它为你提供了一个webcrypto接口在节点。如果你不想直接使用它,你可以在它的JWK处理中找到问题的答案。
也许键编码器库可以提供帮助。尝试将其导出为PEM并检查是否正常工作。考虑使用node-webcrypto-ossl-lib创建密钥。'jwk'格式在开发过程中是一个真正的帮助。您可以轻松地克隆导出键,如下所示:
cloneK = JSON.parse( JSON.stringify( exportedKey ) )
相关文章:
- 如何使用javascript或html下载PDF格式的填写表单
- 货币代码为欧元-金额的格式不应包含小数
- Json数据包含日期和时间格式
- Javascript日期格式类似于ISO,但本地
- 更改angularjs中的日期-时间格式
- 将日期时间从json转换为可读格式
- NodeJS日期格式不起作用
- 我能得到正确的格式吗
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 将日期和时间转换为UTC格式的日期-Javascript
- Javascript格式UTC日期
- 元素的内容必须由格式正确的字符数据或标记组成
- Datetime格式为Friendly Time.Moment JS输出错误
- 将客户端特定的日期格式返回到服务器MVC4
- 将数字四舍五入到小数点后两位,以设置货币格式
- javascript/jquery将utc转换为短格式的本地时间
- JavaScript生成html格式的密码
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 解析加密ECDH公钥为JWK格式,以使用它与WebCrypto