您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)JavaScript怎么實(shí)現(xiàn)的前端AES加密解密功能,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
js前端AES加密
最近由于項(xiàng)目需求做了一次MITM,突然即使發(fā)現(xiàn)使用HTTPS,也不能保證數(shù)據(jù)傳輸過程中的安全性。 通過中間人攻擊,可以直接獲取到Http協(xié)議的所有內(nèi)容。 于是開始嘗試做一些簡單的加密,在一定程度上保證安全性。
本次采用AES加密數(shù)據(jù),所以客戶端和服務(wù)端使用的相同秘鑰。(僅作為演示,正式環(huán)境推薦使用RSA)
首先準(zhǔn)備一份明文密碼和加密使用的KEY
var source = "ABCDEFG"; var aesKey = "8NONwyJtHesysWpM";
JS加密 padding和mode 需要與服務(wù)端相對(duì)應(yīng),否則無法解密
key 為字符串類型,需要處理完再使用
注:PKCS5Padding 和 PKCS7Padding 是一樣的
上段所示的 encryptedData 即為加密后的結(jié)果。
JS解密代碼
encryptedData 為加密后的數(shù)據(jù),
直接通過JS加密后的數(shù)據(jù)是一個(gè)對(duì)象,無法直接解密的, 需要轉(zhuǎn)換為Base64的字符串后才可解密
服務(wù)端應(yīng)當(dāng)返回Base64之后的加密數(shù)據(jù)
encryptedData = encryptedData.ciphertext.toString(); var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedData);
先來看看運(yùn)行結(jié)果:
aes.js文件可點(diǎn)擊此處本站下載。
完整測試代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net 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>
關(guān)于“JavaScript怎么實(shí)現(xiàn)的前端AES加密解密功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。