2016-03-02 5 views
2

У меня есть хранение данных на стороне клиента в localStorage. По соображениям безопасности я хочу зашифровать данные. Есть ли способ шифровать/дешифровать данные клиента (а не данные сервера) с помощью Angularjs?Шифрование данных локального хранилища на стороне клиента с помощью Angularjs

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

ответ

3

Вы можете использовать библиотеку 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; 
} 

Единственная проблема в том, что секретный ключ хранится на стороне клиента и это своего рода ломаная логика таких шифров.

+0

Вы можете добавить ссылку plunkr полного рабочего кода –

1

Это, вероятно, лучший из доступных решений для криптографии в Javascript до сих пор.

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

Однако, вероятно, вы хотите избежать криптографию в браузере, если «безопасность» вызывает беспокойство и, видя, как вы не доверяете на клиентской машине с LocalStorage.

Смежные вопросы