使用Angularjs加密客户端本地存储数据

时间:2016-03-02 06:12:16

标签: angularjs local-storage

我有一个存储在localStorage中的客户端数据。出于安全考虑,我想加密数据。有没有办法使用Angularjs加密/解密客户端数据(而不是服务器数据)?

$scope.accountObj = {
        isErrorMsg:false,
        isReadonly:false,
        createAccountErr:false        
    }; 

2 个答案:

答案 0 :(得分:5)

您可以使用cryptojs库加密/解密您的数据。首先,您应该生成一些在加密过程中使用的密钥:

 var secretKey = 'your-secret-key';

然后您需要存储和声明数据的方法:

store : function (key, value) {
    var encryptedData = CryptoJS.AES.encrypt(angular.toJson(value), secretKey).toString();
    window.localStorage.setItem(key, encryptedData);
},

get : function (key) {
    var encryptedData = window.localStorage.getItem(key);

    if (!_.isNull(encryptedData))
        return angular.fromJson(CryptoJS.AES.decrypt(encryptedValue, secretKey).toString(CryptoJS.enc.Utf8));

    return null;
}

这里唯一的问题是秘密密钥存储在客户端,并且它破坏了这种加密的逻辑。

答案 1 :(得分:1)

这些可能是迄今为止Javascript中用于加密的最佳开箱即用解决方案。

https://www.w3.org/TR/WebCryptoAPI/ https://crypto.stanford.edu/sjcl/

但是,如果" security"那么你可能想避免在浏览器上加密。是一个关注和看到,因为你不信任客户端机器与localStorage。