欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript实现的前端AES加密解密功能【基于CryptoJS】

程序员文章站 2022-06-11 11:05:26
本文实例讲述了javascript实现的前端aes加密解密功能。分享给大家供大家参考,具体如下: js前端aes加密 最近由于项目需求做了一次mitm,突然即使发现使用...

本文实例讲述了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);

先来看看运行结果:

 JavaScript实现的前端AES加密解密功能【基于CryptoJS】

aes.js文件可点击此处本站下载

完整测试代码如下:

<!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==";
  //加密服务端返回的数据
  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.jb51.net/code/htmljsrun,可得到上述运行结果。

ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:

在线aes加密/解密工具:

文字在线加密解密工具(包含aes、des、rc4等):

在线编码转换工具(utf-8/utf-32/punycode/base64):

base64编码解码工具:

在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

在线sha1/sha224/sha256/sha384/sha512加密工具:

更多关于javascript相关内容可查看本站专题:《javascript加密解密技巧汇总》、《javascript查找算法技巧总结》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

希望本文所述对大家javascript程序设计有所帮助。