国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript實現的前端AES加密解密功能【基于CryptoJS】

2019-11-19 13:07:42
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript實現的前端AES加密解密功能。分享給大家供大家參考,具體如下:

js前端AES加密

最近由于項目需求做了一次MITM,突然即使發現使用HTTPS,也不能保證數據傳輸過程中的安全性。 通過中間人攻擊,可以直接獲取到Http協議的所有內容。 于是開始嘗試做一些簡單的加密,在一定程度上保證安全性。

本次采用AES加密數據,所以客戶端和服務端使用的相同秘鑰。(僅作為演示,正式環境推薦使用RSA)

首先準備一份明文密碼和加密使用的KEY

var source = "ABCDEFG";var aesKey = "8NONwyJtHesysWpM";

JS加密 padding和mode 需要與服務端相對應,否則無法解密

key 為字符串類型,需要處理完再使用

注:PKCS5Padding PKCS7Padding 是一樣的

上段所示的 encryptedData 即為加密后的結果。

JS解密代碼

encryptedData 為加密后的數據,
直接通過JS加密后的數據是一個對象,無法直接解密的, 需要轉換為Base64的字符串后才可解密
服務端應當返回Base64之后的加密數據

encryptedData = encryptedData.ciphertext.toString();var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedData);

先來看看運行結果:

 

aes.js文件可點擊此處本站下載

完整測試代碼如下:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>www.survivalescaperooms.com aes.js</title></head><script src="aes.js"></script><body><script>  var key = CryptoJS.enc.Utf8.parse("8NONwyJtHesysWpM");  var plaintText = 'ABCDEFGH'; // 明文  var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {    mode: CryptoJS.mode.ECB,    padding: CryptoJS.pad.Pkcs7  });  console.log("加密前:"+plaintText);  console.log("加密后:"+encryptedData);  encryptedData = encryptedData.ciphertext.toString();  var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedData);  var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);  var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {    mode: CryptoJS.mode.ECB,    padding: CryptoJS.pad.Pkcs7  });  var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);  console.log("解密后:"+decryptedStr);   var pwd = "PCsUFtgog9/qpqmqXsuCRQ==";  //加密服務端返回的數據  var decryptedData = CryptoJS.AES.decrypt(pwd, key, {    mode: CryptoJS.mode.ECB,    padding: CryptoJS.pad.Pkcs7  });  console.log("解密服務端返回的數據:"+decryptedStr);</script></body></html>

代碼中帶入aes.js完整代碼,使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun,可得到上述運行結果。

PS:關于加密解密感興趣的朋友還可以參考本站在線工具:

在線AES加密/解密工具:
http://tools.VeVB.COm/password/aes_encode

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.VeVB.COm/password/txt_encode

在線編碼轉換工具(utf-8/utf-32/Punycode/Base64):
http://tools.VeVB.COm/transcoding/decode_encode_tool

BASE64編碼解碼工具:
http://tools.VeVB.COm/transcoding/base64

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.VeVB.COm/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.VeVB.COm/password/sha_encode

更多關于JavaScript相關內容可查看本站專題:《JavaScript加密解密技巧匯總》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘南县| 宣化县| 犍为县| 射洪县| 开封市| 永昌县| 华池县| 台南县| 扎赉特旗| 灵武市| 高安市| 崇州市| 拉孜县| 印江| 太白县| 新余市| 远安县| 乐清市| 沙田区| 铅山县| 敦煌市| 当涂县| 黄平县| 临漳县| 钦州市| 基隆市| 银川市| 小金县| 大邑县| 于都县| 永嘉县| 城步| 瓮安县| 杂多县| 周至县| 元朗区| 哈巴河县| 东宁县| 济阳县| 东阳市| 南和县|