将 PEM 密钥对转换为 CryptoKey
那么,你有没有想过如何使用 OpenSSL 在 Web Cryptography API 中生成的 PEM RSA 密钥对?如果答案是肯定的。大! 你会发现的。
注意:此过程也可用于公钥,你只需将前缀和后缀更改为:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
此示例假定你在 PEM 中生成了 RSA 密钥对。
function removeLines(str) {
return str.replace("\n", "");
}
function base64ToArrayBuffer(b64) {
var byteString = window.atob(b64);
var byteArray = new Uint8Array(byteString.length);
for(var i=0; i < byteString.length; i++) {
byteArray[i] = byteString.charCodeAt(i);
}
return byteArray;
}
function pemToArrayBuffer(pem) {
var b64Lines = removeLines(pem);
var b64Prefix = b64Lines.replace('-----BEGIN PRIVATE KEY-----', '');
var b64Final = b64Prefix.replace('-----END PRIVATE KEY-----', '');
return base64ToArrayBuffer(b64Final);
}
window.crypto.subtle.importKey(
"pkcs8",
pemToArrayBuffer(yourprivatekey),
{
name: "RSA-OAEP",
hash: {name: "SHA-256"} // or SHA-512
},
true,
["decrypt"]
).then(function(importedPrivateKey) {
console.log(importedPrivateKey);
}).catch(function(err) {
console.log(err);
});
现在你已经完成了! 你可以在 WebCrypto API 中使用导入的密钥。