最近在項目開發中遇到前端發送參數加密的問題,網上查找半天也是很亂,小編自己在項目開發中總結了一下,寫到博客中,希望能夠幫助大家。
貼上html,javascript代碼
1 <!doctype html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8" />
5 <link rel="icon" href="ico.ico">
6 <title>前端md5加密</title>
7
8 </head>
9 <body>
10
11 </body>
12 <script type="text/javascript" src="js/jquery.min.js"></script>
13 <script src="js/core.js"></script>
14 <script src="js/cipher-core.js"></script>
15 <script src="js/tripledes.js"></script>
16 <script src="js/mode-ecb.js"></script>
17 <script>
18 var thisl = {
19 lng : "114.0690720000",
20 lat : "22.6662030000",
21 distance: "10"
22 }
23
24 //加密的私鑰(這個要跟后台進行溝通,確認前后端密鑰相同)
25 var key = 'HL1HBF6lLND721';
26 //將json轉為字符串
27 var aToStr=JSON.stringify(thisl);
28 //對aTostr進行加密
29 var str1 = encryptByDES(aToStr,key);
30
31 //對str1進行解密
32 var str2 = decryptByDESModeEBC(str1,key);
33
34 //將str1轉為字符串傳給后台
35 var num = str1.toString();
36 console.log(num) // 控制台去看
37
38 //將str2解密的字符串轉為json
39 var str2_a = JSON.parse(str2);
40 console.log(str2) // 控制台去看
41
42 var a = '我的博客';
43 //對a進行加密
44 var script_a = encryptByDES(a,key);
45 console.log(script_a); // 控制台去看
46 //script_a解密
47 var decrypt = decryptByDESModeEBC(script_a,key);
48 console.log(decrypt) //我的博客
49
50
51 function encryptByDES(message,key) {
52 //把私鑰轉換成16進制的字符串
53 var keyHex = CryptoJS.enc.Utf8.parse(key);
54 //模式為ECB padding為Pkcs7
55 var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
56 mode: CryptoJS.mode.ECB,
57 padding: CryptoJS.pad.Pkcs7
58 });
59 //加密出來是一個16進制的字符串
60 return encrypted.ciphertext.toString();
61 }
62 //DES ECB模式解密
63 function decryptByDESModeEBC(ciphertext,key) {
64 //把私鑰轉換成16進制的字符串
65 var keyHex = CryptoJS.enc.Utf8.parse(key);
66 //把需要解密的數據從16進制字符串轉換成字符byte數組
67 var decrypted = CryptoJS.DES.decrypt({
68 ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
69 }, keyHex, {
70 mode: CryptoJS.mode.ECB,
71 padding: CryptoJS.pad.Pkcs7
72 });
73 //以utf-8的形式輸出解密過后內容
74 var result_value = decrypted.toString(CryptoJS.enc.Utf8);
75 return result_value;
76 }
77 </script>
78 </html>
