JavaScript實現(xiàn)的前端AES加密解密功能【基于CryptoJS】
本文實例講述了JavaScript實現(xiàn)的前端AES加密解密功能。分享給大家供大家參考,具體如下:
js前端AES加密
最近由于項目需求做了一次MITM,突然即使發(fā)現(xiàn)使用HTTPS,也不能保證數(shù)據(jù)傳輸過程中的安全性。 通過中間人攻擊,可以直接獲取到Http協(xié)議的所有內(nèi)容。 于是開始嘗試做一些簡單的加密,在一定程度上保證安全性。
本次采用AES加密數(shù)據(jù),所以客戶端和服務(wù)端使用的相同秘鑰。(僅作為演示,正式環(huán)境推薦使用RSA)
首先準備一份明文密碼和加密使用的KEY
var source = "ABCDEFG"; var aesKey = "8NONwyJtHesysWpM";
JS加密 padding和mode 需要與服務(wù)端相對應(yīng),否則無法解密
key 為字符串類型,需要處理完再使用
注:PKCS5Padding 和 PKCS7Padding 是一樣的
上段所示的 encryptedData 即為加密后的結(jié)果。
JS解密代碼
encryptedData 為加密后的數(shù)據(jù),
直接通過JS加密后的數(shù)據(jù)是一個對象,無法直接解密的, 需要轉(zhuǎn)換為Base64的字符串后才可解密
服務(wù)端應(yīng)當返回Base64之后的加密數(shù)據(jù)
encryptedData = encryptedData.ciphertext.toString(); var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedData);
先來看看運行結(jié)果:
aes.js文件可點擊此處本站下載。
完整測試代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.dbjr.com.cn 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=="; //加密服務(wù)端返回的數(shù)據(jù) var decryptedData = CryptoJS.AES.decrypt(pwd, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); console.log("解密服務(wù)端返回的數(shù)據(jù):"+decryptedStr); </script> </body> </html>
代碼中帶入aes.js完整代碼,使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun,可得到上述運行結(jié)果。
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
在線AES加密/解密工具:
http://tools.jb51.net/password/aes_encode
文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
在線編碼轉(zhuǎn)換工具(utf-8/utf-32/Punycode/Base64):
http://tools.jb51.net/transcoding/decode_encode_tool
BASE64編碼解碼工具:
http://tools.jb51.net/transcoding/base64
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript加密解密技巧匯總》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- js前端加密庫Crypto-js進行MD5/SHA256/BASE64/AES加解密的方法與示例
- JS使用插件cryptojs進行加密解密數(shù)據(jù)實例
- VueJs里利用CryptoJs實現(xiàn)加密及解密的方法示例
- 使用JS前端加密庫sm-crypto實現(xiàn)國密sm2、sm3和sm4加密與解密
- 前端CryptoJS加密、后端JAVA解密代碼實現(xiàn)參考
- vue項目中使用crypto-js實現(xiàn)加密解密方式
- JS使用 cryptojs加密解密(對稱加密庫)的問題
- vue項目之前端CryptoJS加密、解密代碼示例
- vue用CryptoJS加密,java用CryptoUtil解密
- crypto-js對稱加密解密的使用方式詳解(vue與java端)
相關(guān)文章
理解JavaScript中的Proxy 與 Reflection API
這篇文章主要介紹了JavaScript中的Proxy 與 Reflection API的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下2020-09-09JS實現(xiàn)選定指定HTML元素對象中指定文本內(nèi)容功能示例
這篇文章主要介紹了JS實現(xiàn)選定指定HTML元素對象中指定文本內(nèi)容功能,涉及javascript針對HTML頁面元素的運算與選定相關(guān)操作技巧,需要的朋友可以參考下2017-02-02JavaScript 刪除或抽取字符串指定字符的方法(極為常用)
這篇文章主要給大家分享了極為常用的JavaScript 刪除或抽取字符串指定字符的所有方法,具有一定的參考價值,需要的小伙伴可以參考一下2021-12-12typescript返回值類型和參數(shù)類型的具體使用
本文主要介紹了typescript返回值類型和參數(shù)類型的具體使用文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06div+css+js模擬tab切換效果 事件綁定 IE,firefox兼容
div+css+js模擬tab,這個版本,理論上可以添加無限個tab,而且,你只要管內(nèi)容的添加行了,不需要改JS2009-12-12關(guān)于微信小程序中使用wx.getLocation獲取當前詳細位置并計算距離
這篇文章主要介紹了關(guān)于微信小程序中使用wx.getLocation獲取當前詳細位置并計算距離,wx.getLocation只能夠獲取經(jīng)緯度,不能夠拿到詳細地址,這里使用騰訊地圖的api,需要的朋友可以參考下2023-04-04