Web Crypto API 无法导入 openssl 密钥

Web Crypto API cannot import openssl keys

现在,我正在通过简单测试来测试 Web Crypto API。所以,我有用户的 public 密钥(作为字符串),我想让他传递他的私钥(也是作为字符串),所以我的应用程序可以做一些 encrypting/decrypting。因此,我尝试通过以下方式将他的密钥导入 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 -pubout > mykey.pub

WCAPI 抛出

Unsupported import key format for algorithm

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

能帮忙举个例子就好了。

您有一些错误:

  • raw改为spki(James K Polk指出)

  • TextEncoder.encode() 不适用于二进制密钥。参见 TextEncoder

    Returns a Uint8Array containing utf-8 encoded text.

  • 将 OpenSSL 生成的 PEM 密钥转换为二进制 ArrayBuffer。从这里 使用 convertPemToBinary(pemKey)