欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實現(xiàn)的前端AES加密解密功能【基于CryptoJS】

 更新時間:2018年08月28日 11:30:12   作者:我不是法海  
這篇文章主要介紹了JavaScript實現(xiàn)的前端AES加密解密功能,涉及javascript基于CryptoJS插件進行AES加密解密操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了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è)計有所幫助。

相關(guān)文章

最新評論