Вы можете использовать стандартный javascript WebCryptographyApi, чтобы импортировать открытый ключ для шифрования или подтвердить подпись. Вы должны установить алгоритм и разрешенные операции в зависимости от использования ожидаемого ключа.
Шифрование
//Convert the public key in base 64 (DER encoded) to array buffer
var publicKeyAB = str2ab(atob(publicKeyB64));
//import key to encrypt with RSA-OAEP
crypto.subtle.importKey(
"spki",
publicKeyAB,
{ name: "RSA-OAEP", hash: {name: "SHA-256"}},
false,
["encrypt"])
.then(function(key){
//do something with the key
}).catch(function(err) {
console.log(err);
});
Проверка подписи
//Convert the public key in base 64 (DER encoded) to array buffer
var publicKeyAB = str2ab(atob(publicKeyB64));
//import the key to verify RSA signature with SHA 256
crypto.subtle.importKey(
"spki",
publicKeyAB,
{name: 'RSASSA-PKCS1-v1_5', hash: { name: 'SHA-256' }},
false,
["verify"])
.then(function(key){
//do something with the key
}).catch(function(err) {
console.log(err);
});
функции Подсобные
function str2ab(str) {
var arrBuff = new ArrayBuffer(str.length);
var bytes = new Uint8Array(arrBuff);
for (var iii = 0; iii < str.length; iii++) {
bytes[iii] = str.charCodeAt(iii);
}
return bytes;
}
См м примеры руды here