最近在項目開發中遇到前端發送參數加密的問題,網上查找半天也是很亂,小編自己在項目開發中總結了一下,寫到博客中,希望能夠幫助大家。
查看所有代碼可到我的github上查看源文件,下載后在控制台查看結果即可.
貼上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>