我有一个存储在localStorage中的客户端数据。出于安全考虑,我想加密数据。有没有办法使用Angularjs加密/解密客户端数据(而不是服务器数据)?
$scope.accountObj = {
isErrorMsg:false,
isReadonly:false,
createAccountErr:false
};
答案 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。