將 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 中使用匯入的金鑰。