我有一個客戶端數據存儲在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鏈接 –