关于locastorage的加密

1,255 阅读3分钟

一直以来都是用vue做项目,之前在做项目的过程中,牵扯到vuex这块存储数据的时候,因为vuex的存储机制问题导致页面刷新后,数据不会及时的进行回流,所以我一般习惯于把数据存储到locastorage中,把locastorage作为一个中介,第一次从后台拉取数据时边直接进行存储,这样刷新“丢数据”的机制就迎刃而解。

但是locastorage作为本地储存很容易把后台的数据直接暴露出来,不符合业务的需求,安全性也不高,所以当时为了实现业务的需求也是找了很多五花八门的插件进行封装,最终经过层层筛选,选了这个轻量级,用起来用方便的依赖 secure-ls

使用 AES。DES。Rabbit 和 RC4 等各种加密方式保护数据。 ( 默认为 Base64 编码)。 将数据存储到 localStorage 之前压缩数据以保存额外的字节( 默认为 true )。 通过 localStorage API实现高级API包装,提供其他基本工具。 将数据保存在多个键 inside localStorage 和 secure-ls 将始终记住它的创建。

$ npm install secure-ls

使用的库 使用的加密/解密 密码算法

安全加密和解密数据需要密钥。 在API中提供自定义密钥,那么库就会选择使用 PBKDF2 来生成另一个非常 secure的密码键,它将进一步用于将来的API请求。

PBKDF2 是基于密码的密钥派生函数。 在许多密码学中,用户安全最终依赖密码,因为密码通常不能作为密码使用。

一个盐为任何给定密码提供大量密钥,迭代计数增加密码生成密钥的成本。

55e8f5585789191d350329b9ebcf2b11 和 db51d35aad96610683d5a40a70b20c39。

比如,在这样的字符串中,使用,可以很容易地发现代码,但这不会使它变得不安全,PBKDF2 层将处理安全性。

使用 lz字符串的compresion/解压

用法

示例 1: 使用 default 设置 换句话说,Base64 编码和数据压缩

 var ls = new SecureLS();


ls.set('key1', {data: 'test'});//set key1


ls.get('key1');//print data`

{data: 'test'}

示例 2: 使用 AES 加密和数据压缩

var ls = new SecureLS({encodingType: 'aes'});


 ls.set('key1', {data: 'test'});//set key1


ls.get('key1');//print data


 {data: 'test'}

> ls.set('key2', [1, 2, 3]);//set another key


> ls.getAllKeys();//get all keys


 ["key1","key2"]


> ls.removeAll();//remove all keys

示例 3: 使用 RC4 加密但没有数据压缩

> var ls = new SecureLS({encodingType: 'rc4', isCompression: false});


> ls.set('key1', {data: 'test'});//set key1


> ls.get('key1');//print data


 {data: 'test'}



> ls.set('key2', [1, 2, 3]);//set another key


> ls.getAllKeys();//get all keys


 ["key1","key2"]


> ls.removeAll();//remove all keys

示例 3: 使用 DES 加密,没有数据压缩和自定义密钥

> var ls = new SecureLS({encodingType: 'des', isCompression: false, encryptionSecret: 'my-secret-key'});


> ls.set('key1', {data: 'test'});//set key1


> ls.get('key1');//print data


 {data: 'test'}



> ls.set('key2', [1, 2, 3]);//set another key


> ls.getAllKeys();//get all keys


 ["key1","key2"]


> ls.removeAll();//remove all keys


API文档 在使用之前创建实例/引用。

var ls = new SecureLS();

Contructor 接受一个可以配置的Object,其中所有三个键都是可选的。配置密钥默认接受 encodingType Base64 Base64/AES/DES/Rabbit/RC4/'' isCompression true true/false encryptionSecret PBKDF2值 字符串 注意:如果只使用 AES,DES,RC4,Rabbit 就会对数据进行加密和解密,如果没有选择编码/base64编码方法,库将丢弃它。