講講前端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良夜

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM