Я использую веб-Crypto, более конкретно эти примеры: https://github.com/diafygi/webcrypto-examples/#rsa-oaepшифровать и дешифровать с RSA OAEP
Моя главная цель состоит в том, чтобы зашифровать строку с моим открытым ключом и расшифровать его с моим секретным ключом.
Шифрование с открытым ключом работает хорошо, но когда я пытаюсь расшифровать зашифрованную строку с помощью закрытого ключа, она возвращает следующую ошибку: OperationError
и пустую строку.
Я использую следующие функции:
function encryptDataWithPublicKey(data, key) {
data = stringToArrayBuffer(data);
return window.crypto.subtle.encrypt(
{
name: "RSA-OAEP",
//label: Uint8Array([...]) //optional
},
key, //from generateKey or importKey above
data //ArrayBuffer of data you want to encrypt
);
}
function decryptDataWithPrivateKey(data, key) {
data = stringToArrayBuffer(data);
return window.crypto.subtle.decrypt(
{
name: "RSA-OAEP",
//label: Uint8Array([...]) //optional
},
key, //from generateKey or importKey above
data //ArrayBuffer of data you want to encrypt
);
}
function stringToArrayBuffer(str){
var buf = new ArrayBuffer(str.length);
var bufView = new Uint8Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
UPDATE
var data = "example";
encryptDataWithPublicKey(data, publicKey).then((result) => {
var rdata = arrayBufferToString(result);
return decryptDataWithPrivateKey(rdata, privateKey).then((result) => {
var result = arrayBufferToString(result);
});
});
function arrayBufferToString(str){
var byteArray = new Uint8Array(str);
var byteString = '';
for(var i=0; i < byteArray.byteLength; i++) {
byteString += String.fromCodePoint(byteArray[i]);
}
return byteString;
}
вы говорите, шифрование данных, то расшифровка ... Вам 've показал функции, которые делают это, но вы не показывали **, как ** вы их используете, возможно, вы используете их неправильно (то есть, что вы делаете с возвращаемым значением из ваших функций шифрования/дешифрования) –
EncryptDataWithPublicKey работает хорошо, но я не могу расшифровать его с помощью другой функции. Я не понимаю, почему. – urb
да, поэтому вы уже сказали в вопросе ... но я попросил вас показать **, как ** вы используете свои функции, потому что я подозреваю, что вы делаете это неправильно, я не просил об этом тратить ваше время или ничего –