Web Crypto API 无法导入 openssl 密钥

Kam*_*mil 2 javascript openssl rsa webcrypto-api

现在,我正在通过简单的测试来测试 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'])
Run Code Online (Sandbox Code Playgroud)

密钥由

openssl genrsa -out mykey.pem 4096
openssl rsa -in mykey.pem -pubout > mykey.pub
Run Code Online (Sandbox Code Playgroud)

WCAPI 抛出

Unsupported import key format for algorithm
Run Code Online (Sandbox Code Playgroud)

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

一个例子的帮助会很好。

ped*_*ofb 5

你有一些错误:

  • 更改rawspki(由 James K Polk 指出)

  • TextEncoder.encode()不适用于二进制密钥。见文本编码器

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

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