Web Crypto API无法导入openssl密钥

时间:2018-01-30 12:11:29

标签: javascript openssl rsa webcryptoapi

目前,我正在通过简单测试来测试Web Crypto API。所以,我有用户的公钥(作为一个字符串),我想让他传递他的私钥(也作为一个字符串),所以我的应用程序可以做一些加密/解密。因此,我尝试通过执行以下操作将其密钥导入Web Crypto API:

var textEncoder = new TextEncoder();
var alg = {
    name: "RSA-OAEP",
    hash: {name: "SHA-256"}
}
window.crypto.subtle.importKey('raw', textEncoder.encode(myPublicKey), alg, false, ['encrypt'])

按键由

生成
openssl genrsa -out mykey.pem 4096
openssl rsa -in mykey.pem -pbout > mykey.pub

WCAPI抛出

Unsupported import key format for algorithm

我在alg中尝试了其他哈希,但仍然没有成功。

帮助一个例子会很好。

1 个答案:

答案 0 :(得分:4)

您有一些错误:

  • spki更改为TextEncoder.encode()(由James K Polk指出)

  • convertPemToBinary(pemKey)不适合二进制密钥。见TextEncoder

      

    返回包含utf-8编码文本的Uint8Array。

  • 将OpenSSL生成的PEM密钥转换为二进制ArrayBuffer。从https://stackoverflow.com/a/34995761/6371459使用as