嘎里三分熟
  • 首页
  • JMusic
  • TSBay
  • 常用工具
  • About Me
  • 留言板
一行代码一世浮生
  1. 首页
  2. Java web
  3. JavaScript
  4. 正文

AES双向加密2(JavaScript)

2017年06月04日 3079点热度 3人点赞 0条评论

一、简介

       上篇介绍了使用 Java 代码对 AES 这种对称的双向加密技术的具体实现,此篇文章便讲解下 JS 页面的 AES 双向加密技术的实现。

       其实在有些场景下,我们需要在前端进行数据的加密和解密,并且有时候会需要和后端进行一些些交互,由于 JavaScript 若类型语言的特性存在,所以经常会出现前后台加密解密后出现数据有差的情况,后来查阅后发现,其实可以使用 CryptoJS 来实现 JS 的 AES 双向加密, easy 啦。

二、实现

       其实很简单,我们只需要引入 CryptoJS 文件,然后调用其中方法即可,JS 文件点此 GitHub 地址获取。

       加密代码:

      CryptoJS.AES.encrypt(word,key).toString();

       解密代码:

      CryptoJS.AES.decrypt(word,key).toString(CryptoJS.enc.Utf8);

      其中,work 是你加密的数据,key 是你的秘钥。另外,你也可以点击此链接在线验证 AES 加密。

三、神来之笔

       还有一种是稍复杂一点的,就是除了需要的秘钥之外,还有一个偏移量(iv)。

       老规矩,需要的 JS 文件点此 GitHub 地址获取。

        代码如下:

     var key = CryptoJS.enc.Utf8.parse("十六位十六进制数作为秘钥");  
    var iv  = CryptoJS.enc.Utf8.parse('十六位十六进制数作为秘钥偏移量');  
    
    // 加密方法
    function Encrypt(word){
        srcs = CryptoJS.enc.Utf8.parse(word);            
        var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});            
        return encrypted.ciphertext.toString().toUpperCase();
    }    
    
    // 解密方法    
    function Decrypt(word){  
        var encryptedHexStr = CryptoJS.enc.Hex.parse(word);            
        var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);            
        var decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});            var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); 
        return decryptedStr.toString();
    }

      最后,也提供一个可以在线校验的地址。

四、小结

       总结就是,数据都是宝贝,数据都是争夺的资源,数据的加密也是有所必要的(虽然本文介绍的加密技术较为一般,但是能满足一般需求)。

       有些大篇幅的详细解释就不贴在此文中了,可以点此链接查看与钻研。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: JavaScript 前端 加密/解密 工具
最后更新:2017年06月04日

GoldenJet

爱折腾技术的90后漫威小死忠程序员一枚

点赞
下一篇 >

文章评论

取消回复

通过电子邮件订阅博客

分类目录
  • BootStrap (2)
  • Bug集中营 (6)
  • Java web (3)
  • JavaScript (7)
  • Java基础 (17)
  • Java工具 (5)
  • Linux (3)
  • Python (3)
  • SpringBoot (14)
  • Spring基础 (8)
  • thymeleaf (1)
  • 娱乐 (3)
  • 小谈 (2)
  • 常用工具 (7)
  • 技术分析集 (5)
  • 技能 (10)
  • 源码 (4)
  • 科普类 (1)
  • 算法 (9)
  • 踩坑记 (5)
文章归档
  • 2020年11月 (1)
  • 2020年7月 (1)
  • 2020年4月 (2)
  • 2020年3月 (1)
  • 2020年1月 (1)
  • 2019年11月 (1)
  • 2019年10月 (1)
  • 2019年9月 (1)
  • 2019年8月 (1)
  • 2019年7月 (2)
  • 2019年5月 (2)
  • 2019年4月 (2)
  • 2019年3月 (3)
  • 2019年2月 (2)
  • 2019年1月 (2)
  • 2018年12月 (2)
  • 2018年11月 (3)
  • 2018年10月 (3)
  • 2018年9月 (2)
  • 2018年8月 (3)
  • 2018年7月 (2)
  • 2018年5月 (1)
  • 2018年4月 (3)
  • 2018年3月 (2)
  • 2018年2月 (3)
  • 2018年1月 (5)
  • 2017年12月 (2)
  • 2017年11月 (3)
  • 2017年10月 (1)
  • 2017年9月 (1)
  • 2017年8月 (1)
  • 2017年7月 (7)
  • 2017年6月 (5)
  • 2017年5月 (1)
  • 2017年4月 (2)
  • 2017年3月 (4)
  • 2017年2月 (2)
小伙伴友链
  • 前端驿站

COPYRIGHT © 2017-2020 嘎里三分熟. ALL RIGHTS RESERVED.

浙ICP备17005575号-1

浙公网安备 33010802009043号