讲讲前端js中常用几种的数据加密

加密从来都不仅仅是一方要做的是,前端做了数据的加密,后端也仍然要做数据的加密;

那么到底有没有必要做前端数据的加密?前端做数据的加密有时候显得多此一举,但有时又显得极为重要:在此举个例子吧,就好比说当今市面上的锁都可以在20分钟内被解开,

那么你感觉有没有必要给自己的房子上锁?个人感觉还是十分有必要的。

web的网络安全信息十分宏大,在此先来讲讲前端js常用的几种数据加密算法吧!

1.使用base64对数据进行加密(btoa加密,atob解密)

需要注意的:base64的转码只是针对字符串,若出现了中文符号或者中文等,会报错.

会使用到window,故需在浏览器环境下运行。。

如:

1 //window是BOM的核心对象,而web中使用JavaScript,而BOM是核心,故需要在浏览器环境下才可使用
2 let str = 'hello,';
3 let sec_str = window.btoa(str);
4 console.log('加密后:' + sec_str); //加密后:aGVsbG8s
5 let en_str = window.atob(sec_str);
6 console.log('解密后:' + en_str); //解密后:hello,

 

如果想用采用支持中文式的加密可采用window.encodeURIComponent()和window.decodeURIComponent().

如:

1 //支持中文的另类式加密
2 let name = '良夜getIt,62';
3 let sec_name = window.encodeURIComponent(name);
4 console.log('加密后:' + sec_name); //加密后:%E8%89%AF%E5%A4%9CgetIt%EF%BC%8C62
5 let en_name = window.decodeURIComponent(sec_name);
6 console.log('解密后' + en_name); //解密后良夜getIt,62

 

显然可见,此种算法属于可逆转式加密,对于可逆转式加密一般建议自己定义转码译码规则,且可逆转的加密可以进行对此加密,在此就不细说了,

有兴趣的可以私下来研究研究。

 

2.sha1加密(不可逆转)

加密思想:接收一段明文,然后以不可逆转的方式加密成密文;

与md5进行比较:

密码分析的安全性:由于md5设计,易受密码分析的攻击;而sha1对密码分析攻击具有着更强的耐受力;

速度:在同等硬件下,sha1的运行速度慢于md5;

使用:同样需要引入sha1.js,此处是在bootcdn上引入在线文件来使用的,bootcdn(用过的都说好!!!)

代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <script src="https://cdn.bootcdn.net/ajax/libs/js-sha1/0.6.0/sha1.js"></script>
 9 </head>
10 
11 <body>
12 
13 </body>
14 <script>
15     var sha1_1 = sha1("hello良夜123");
16     console.log(sha1_1); //9d4237013af6d0a3aa1809465117189fb40b4560
17     var sha1_2 = sha1("admin:10086");
18     console.log(sha1_2); //a3f2da43101c634a42771f86e25c4abc415be0bc
19 </script>
20 
21 </html>

 

3.MD5不可逆转加密

这里同样引入bootcdn的md5.js文件,有兴趣的同学可以下载

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>md5</title>
 8     <script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.17.0/js/md5.js"></script>
 9 </head>
10 
11 <body>
12 
13 </body>
14 <script>
15     let pswd = 'wu913628';
16     console.log(md5(pswd)); // 126591c250ccda6ff045006461d773f2
17 </script>
18 
19 </html>

 

 

 

4.使用js函数escape()和unescape()来编码和解码字符串

1 let pswd = 'wu913428良夜';
2 let sec_pswd = escape(pswd);
3 console.log('加密后' + sec_pswd); //加密后wu913428%u826F%u591C
4 console.log('解密后' + unescape(sec_pswd)); //解密后wu913428良夜

 

posted @ 2020-08-06 02:10  良夜  阅读(1954)  评论(1编辑  收藏  举报