我有一个客户端数据存储在localStorage中。出于安全原因,我想加密数据。有什么方法可以使用Angularjs加密/解密客户端数据(而不是服务器数据)?使用Angularjs加密客户端本地存储数据
$scope.accountObj = {
isErrorMsg:false,
isReadonly:false,
createAccountErr:false
};
我有一个客户端数据存储在localStorage中。出于安全原因,我想加密数据。有什么方法可以使用Angularjs加密/解密客户端数据(而不是服务器数据)?使用Angularjs加密客户端本地存储数据
$scope.accountObj = {
isErrorMsg:false,
isReadonly:false,
createAccountErr:false
};
您可以使用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;
}
这里唯一的问题是,密钥存储在客户端这是一种破坏这种加密的逻辑。
这些可能是迄今为止Javascript中用于加密的最佳开箱即用解决方案。
https://www.w3.org/TR/WebCryptoAPI/ https://crypto.stanford.edu/sjcl/
然而,你可能会想避免在浏览器密码,如果“安全”是一个问题,看到你不同意你的localStorage信任的客户机上。
你能PLZ添加一个完整的工作代码plunkr链接 –