小编Ant*_*rer的帖子

如何在本地存储中保存CryptoKey?

我想在现有项目上使用Web密码学API。要加密和解密某些内容,我必须使用CryptoKey,但是当我将CryptoKey保存到localStorage时,它只会保存String(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);
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

错误消息当然是:

无法在'SubtleCrypto'上执行'decrypt':参数2不是'CryptoKey'类型。2localStorageHandler.js:39 CryptoPromise [对象CryptoKey]

如果我不使用localStorage进行解密,则加密数据没有问题。

javascript encryption webcrypto-api

7
推荐指数
1
解决办法
2346
查看次数

标签 统计

encryption ×1

javascript ×1

webcrypto-api ×1