既存のプロジェクトで Web 暗号化 API を使用したいと考えています。何かを暗号化および復号化するには、CryptoKey を使用する必要がありますが、CryptoKey を localStorage に保存すると、オブジェクトではなく文字列 (CryptoKey) のみが保存されます。
CryptoKey を単純な型 (文字列) でシリアル化/変換することは可能ですか?
私の解読方法は
function decryptDataWithAES(keyName)
{
var decrypt_promise;
var aesKey = localStorage.getItem(keyName + 'key')
var item = localStorage.getItem(keyName)
var invokeVektor = localStorage.getItem(keyName + 'vector')
console.log("aesKey", aesKey )
crypto.subtle.decrypt({ name: "AES-CBC", iv: invokeVektor }, aesKey, item).then(function (result) {
decrypted_data = new Uint8Array(result); decrypted_data = new Uint8Array(result);
decrypt_promise = convertArrayBufferViewtoString(decrypted_data);
console.log('decryptDataWithAES ' + decrypt_promise);
return decrypt_promise;
},
function(e){
console.log(e.message);
}
);
}
もちろん、エラーメッセージは次のとおりです。
'SubtleCrypto' で 'decrypt' を実行できませんでした: パラメータ 2 はタイプ 'CryptoKey' ではありません。2localStorageHandler.js:39 CryptoPromise[オブジェクト暗号鍵]
localStorage を使用せずに復号化すると、データの暗号化に問題はありません。