{ 代码:200, 编号:4 msg:“成功”, 用户:“ Sourav” }
我遇到一个问题,例如我想将ID和用户以加密格式存储在本地存储中。如何使用Angular 6做到这一点?
答案 0 :(得分:5)
在客户端进行加密是没有意义的,因为密钥要么存储在Javascript代码中,要么通过HTTP发送。在两种情况下都不可能混淆。
答案 1 :(得分:5)
在我们的一个项目中,我们使用了“ crypto-js”库。 http://github.com/brix/crypto-js
import * as CryptoJS from 'crypto-js';
encryptData(data) {
try {
return CryptoJS.AES.encrypt(JSON.stringify(data), this.encryptSecretKey).toString();
} catch (e) {
console.log(e);
}
}
decryptData(data) {
try {
const bytes = CryptoJS.AES.decrypt(data, this.encryptSecretKey);
if (bytes.toString()) {
return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
}
return data;
} catch (e) {
console.log(e);
}
}
答案 2 :(得分:4)
尽管并不完美,但是window.btoa()
将提供基本的base-64
编码,以避免每个人都读取用户数据。这可能是您最快的解决方案。由于客户端的加密是不安全的,因为最终用户可以看到浏览器中的所有内容(您的代码或Ajax调用等),甚至您的加密密钥也是如此。
答案 3 :(得分:1)
答案 4 :(得分:0)
您也可以使用secure-ls。无需在客户端维护解密密钥。
import * as SecureLS from 'secure-ls';
export class StorageService {
private _ls = new SecureLS({ encodingType: 'aes' });
constructor() {
}
set(key: string, value: any, expired: number = 0) {
this._ls.set(key, value);
}
remove(key: string) {
this._ls.remove(key);
}
get(key: string) {
return this._ls.get(key);
}
clear() {
this._ls.removeAll();
}
}