目前,我正在通过简单测试来测试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中尝试了其他哈希,但仍然没有成功。
帮助一个例子会很好。
答案 0 :(得分:4)
您有一些错误:
将spki
更改为TextEncoder.encode()
(由James K Polk指出)
convertPemToBinary(pemKey)
不适合二进制密钥。见TextEncoder
返回包含utf-8编码文本的Uint8Array。
将OpenSSL生成的PEM密钥转换为二进制ArrayBuffer。从https://stackoverflow.com/a/34995761/6371459使用as
。