最近做的一個項目,需要對傳輸的參數進行aes加密,所以就順便的瞭解了一下,因爲這種東西,肯定都是有寫好的,現成的,所有這裏就簡單的記錄一下,方便以後自己和大家查找。
首先附上百度的關於AES的百度百科鏈接,如果覺得看的不是很明白的話,這裏有一個漫畫版的。然後在附上一個在線的加密解密的網站鏈接。方便大家自行的查詢與應用。好的廢話不多說,下面直接上代碼。
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 7 </head> 8 9 <!--<script src="https://sellpow-html.oss-cn-beijing.aliyuncs.com/public/js/aes.js"></script>--> 10 <!--<script src="https://cdn.bootcss.com/aes-js/3.1.2/index.js"></script>--> 11 <script src="http://react.file.alimmdn.com/aes.js" type="text/javascript" charset="utf-8"></script> 12 <body> 13 14 <script> 15 var key = CryptoJS.enc.Utf8.parse("8NONwyJtHesysWpM");//密鑰 16 var plaintText = '{"a":1}'; // 需要傳輸的明文 17 var encryptedData = CryptoJS.AES.encrypt(plaintText, key, { 18 mode: CryptoJS.mode.ECB,//這裏是選擇的模式 19 padding: CryptoJS.pad.Pkcs7//這裏也是選擇的一個模式 20 }); 21 console.log("加密前:"+plaintText); 22 console.log("加密後:"+encryptedData); 23 24 encryptedData = encryptedData.ciphertext.toString(); 25 var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedData); 26 var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr); 27 28 var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, { 29 mode: CryptoJS.mode.ECB, 30 padding: CryptoJS.pad.Pkcs7 31 }); 32 33 var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8); 34 35 console.log("解密後:"+decryptedStr); 36 37 var pwd = "PCsUFtgog9/qpqmqXsuCRQ=="; 38 //加密服務端返回的數據 39 var decryptedData = CryptoJS.AES.decrypt(pwd, key, { 40 mode: CryptoJS.mode.ECB, 41 padding: CryptoJS.pad.Pkcs7 42 }); 43 44 console.log("解密服務端返回的數據:"+decryptedStr); 45 46 </script> 47 </body> 48 </html>
我在這個程序中使用的是ECB模式,所以就沒有什麼偏移量的問題了,如果你們使用的是其他的模式,請增加偏移量。