【发布时间】:2020-06-16 09:11:18
【问题描述】:
这是我到目前为止从密钥对导出公钥和私钥的方法:
let pub = await crypto.subtle.exportKey("spki", keyPair.publicKey);
let prv = await crypto.subtle.exportKey("spki", keyPair.privateKey);
这导致两个单独的数组缓冲区保存我的公钥和私钥。
我想了解如何一次将整个密钥对导出到单个数组缓冲区中?
类似这样的:
let pair = await crypto.subtle.exportKeyPair("spki", keyPair);
是否有 web api 和格式?
否则有没有一种安全的方法将两个数组缓冲区(导出的公钥和私钥)连接在一起,以便在导入时可以再次拆分它们?然后,在导入导出的密钥对时,我需要一些机制来处理格式错误的输入。
我必须这样做,因为我的界面要求我返回一个数组缓冲区。
【问题讨论】:
-
您需要分别导出私钥和公钥,然后将结果拼接起来,例如base64,或者使用PEM等标准格式。
-
@pedrofb 感谢您的意见。我手动连接了两个缓冲区并将第一个缓冲区的长度添加到开头,以便在导入时可以正确拆分它。我想使用标准格式,是否有用于以 PEM 格式导出的 Web API?
-
PEM 是一种相对简单的格式。您可以使用库或自己转换密钥。见stackoverflow.com/a/40327542/6371459
标签: javascript cryptography arraybuffer webcrypto-api uint8array