最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)

首先準(zhǔn)備一份明文密碼和加密使用的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)當(dā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>m.fzitv.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>

代碼中帶入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)文章

  • 利用Javascript裁剪圖片并存儲的簡單實現(xiàn)

    利用Javascript裁剪圖片并存儲的簡單實現(xiàn)

    裁剪圖片對我們來說是再熟悉不過的了,最近工作中就又遇到了這個需求,所以想著干脆整理下來,方法大家和自己在需要的時候參考學(xué)習(xí),所以這篇文章主要介紹了利用Javascript裁剪圖片并存儲的簡單實現(xiàn),后端PHP處理我用的是THINKPHP框架,需要的朋友可以參考下。
    2017-03-03
  • 用js寫的一個路由(簡單實例)

    用js寫的一個路由(簡單實例)

    下面小編就為大家?guī)硪黄胘s寫的一個路由(簡單實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 實例分析瀏覽器中“JavaScript解析器”的工作原理

    實例分析瀏覽器中“JavaScript解析器”的工作原理

    本文主要對javascript解析器的工作原理進行實例分析,具有很好的參考價值,下面就跟小編一起來看下吧
    2016-12-12
  • 簡易的JS計算器實現(xiàn)代碼

    簡易的JS計算器實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了JS簡易的計算器實現(xiàn)代碼,,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 原生javaScript做得動態(tài)表格(注釋寫的很清楚)

    原生javaScript做得動態(tài)表格(注釋寫的很清楚)

    因為看公司好多用動態(tài)表格的,所以,我就試著用js做了動態(tài)表格,下面有個不錯的示例,感興趣的朋友可以參考下
    2013-12-12
  • JavaScript高級程序設(shè)計(第三版)學(xué)習(xí)筆記6、7章

    JavaScript高級程序設(shè)計(第三版)學(xué)習(xí)筆記6、7章

    這篇文章主要介紹了JavaScript高級程序設(shè)計(第三版)學(xué)習(xí)筆記6、7章 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • JavaScript 繼承詳解(五)

    JavaScript 繼承詳解(五)

    在本章中,我們將分析John Resig關(guān)于JavaScript繼承的一個實現(xiàn) - Simple JavaScript Inheritance,需要的朋友可以參考下
    2016-10-10
  • javascript基于原型鏈的繼承及call和apply函數(shù)用法分析

    javascript基于原型鏈的繼承及call和apply函數(shù)用法分析

    這篇文章主要介紹了javascript基于原型鏈的繼承及call和apply函數(shù)用法,結(jié)合實例形式較為詳細(xì)的分析了javascript中繼承的概念、創(chuàng)建方法以及call和apply函數(shù)的功能與使用技巧,需要的朋友可以參考下
    2016-12-12
  • javaScript中的空值和假值

    javaScript中的空值和假值

    JavaScript 是世界上最流行的編程語言。javaScript中有五種空值和假值,分別為false,null,undefined,“”,0。從廣義上來說,這五個值都是對應(yīng)數(shù)據(jù)類型的無效值或空值
    2017-12-12
  • javascript復(fù)制粘貼與clipboardData的使用

    javascript復(fù)制粘貼與clipboardData的使用

    window.clipboardData可以實現(xiàn)復(fù)制與粘貼的操作,下面有個小示例,想學(xué)習(xí)的朋友可以參考下
    2014-10-10

最新評論

双辽市| 盈江县| 上犹县| 姜堰市| 合肥市| 额敏县| 东乡族自治县| 岑巩县| 长寿区| 桃园市| 新田县| 镇巴县| 吉林省| 遵义市| 集安市| 石狮市| 施甸县| 滦南县| 明光市| 无锡市| 霍山县| 治县。| 凭祥市| 山西省| 盘山县| 白山市| 洞口县| 中牟县| 通江县| 崇左市| 棋牌| 盘锦市| 大宁县| 西青区| 卢氏县| 榆中县| 隆回县| 和田县| 全州县| 霍邱县| 东丽区|