2
我使用網絡加密,更具體的這些例子: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;
}
你說你是對數據進行加密,然後解密吧...你已經顯示了這樣做的函數,但是你沒有顯示**你如何使用它們 - 也許你正在使用它們(例如,你對加密/解密函數的返回值做什麼) –
encryptDataWithPublicKey效果很好,但我無法用其他功能解密。我不明白爲什麼。 – urb
是的,所以你已經在問題中說過了......但我要求你展示**你如何使用你的函數,因爲我懷疑你做錯了,我沒有要求這樣浪費你的時間,任何東西 –