AES算法:  我们通常是将一串明文通过AES加密成密文然后传递,接收方采用相同的方法解密进行使用,下面详细介绍使用方法、以及可能遇到的bug。

密匙:随机的字符串都可,但要注意长度要求为4、8、12、16等幂次增长,否则解密困难。

一、加密解密涉及的参数说明:

  1. key(密匙):自定义;
  2. 明    文          :要加密的值;
  3. IV                  :向量,偏移量;
  4. mode             :  加密模式五种,EBC(不支持IV)、CBC、CFB、OFB、CTR,前两者常                               用、后四种均支持IV;
  5. padding         :  填充方式三种,PKCS5,、PKCS7(如果使用PKCS5报错,用PKCS7就可                             以)、 NOPADDING
  6. 密文              :加密后的值;前端加密出来的就是base64格式的

二、结合react简单使用:

注:CryptoJS.enc.Utf8.parse  是用来从UTF8编码解析出原始字符串,以及配对的可以把字符串转成UTF8编码

转为加密需要的wordarray:let   wordarray = CryptoJS.enc.Utf8.parse("****")

转为字符串:let   utf8str       = CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Utf8.stringify(decrypt))

1、npm 安装:npm install crypto-js2、引入:import CryptoJS from 'crypto-js'; 3、使用//加密encrypt(word){var key = CryptoJS.enc.Utf8.parse("tion2077");//密钥与后端保持一致var srcs = CryptoJS.enc.Utf8.parse(word);var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});   //encrypted.toString()  就是base64格式的return encodeURIComponent(encrypted.toString()); // (encodeURIComponent可以不要,根据自己的需求来)}//解密decrypt(word){let decodeurl = decodeURIComponent(word)  //(对应上方的decodeURIComponent)var key = CryptoJS.enc.Utf8.parse("tion2077");var decrypt = CryptoJS.AES.decrypt(decodeurl, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});return CryptoJS.enc.Utf8.stringify(decrypt).toString();}console.log('加密前:123');                   //加密前:123console.log('加密后:',this.encrypt(123));    //加密后:Qr1BDgw5JWOWySL8m4KTFQ%3D%3Dconsole.log('解密后:',this.decrypt(this.encrypt(123)));  //解密后:123

三、相关拓展

1、加密后的数据直接转为字符串是Base64编码的:   eg.  encryteddata.toString()   这种解密的时候不需要btoa等base解码,如第二部分代码即可2、转为java的密文应为(一般后端想要这种):let encoded_str =  encryteddata.ciphertext.toString()这时解密就要将其先转为base64格式第一步:let encryptedHexStr = CryptoJS.enc.Hex.parse(encoded_str)  //先转为16进制第二步:let encryptedBase64 = CryptoJS.enc.Base64.stringify(encryptedHexStr) //转为base643、代码编写//加密encrypt(word){var key = CryptoJS.enc.Utf8.parse("tion2077");//密钥与后端保持一致var srcs = CryptoJS.enc.Utf8.parse(word);var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});   //encrypted.toString()  就是base64格式的return encodeURIComponent(encrypted.ciphertext.toString()); // (encodeURIComponent可以不要,根据自己的需求来)}//解密decrypt(word){let decodeurl = decodeURIComponent(word)  //(对应上方的decodeURIComponent)let encryptedHexStr = CryptoJS.enc.Hex.parse(decodeurl) //WordArray.init格式//{sigBytes: 16,words: (4) [1119699214, 205071715, -1765203204, -1685941483]}let encryptedBase64 = CryptoJS.enc.Base64.stringify(encryptedHexStr) //Qr1BDgw5JWOWySL8m4KTFQ==var key = CryptoJS.enc.Utf8.parse("tion2077");var decrypt = CryptoJS.AES.decrypt(decodeurl, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});return CryptoJS.enc.Utf8.stringify(decrypt).toString();}console.log('加密前:123');                  //加密前:123console.log('加密后:',this.encrypt(123));   //加密后:42bd410e0c39256396c922fc9b829315console.log('解密后:',this.decrypt(this.encrypt(123)));//解密后:123

AES算法以及前端使用实例相关推荐

  1. DES加密解密算法(前端后端)

    DES加密解密算法(前端&后端) 原作者 阿弥陀佛1114  原文链接:https://blog.csdn.net/zong1114/article/details/51754470 DES对 ...

  2. Javascript实现AES算法

    JavaScript的加密和解密用的是google的CryptoJS库. 需要下载CryptoJS库,下载地址如下:https://github.com/sytelus/CryptoJS AES算法 ...

  3. 前后台加解密的使用--SHA256算法 RSA算法 AES算法

    SHA256算法 sha256与md5一样是散列算法,不是加密算法,不存在解密的问题,因此是不可逆的,可以通过key+password,对密码进行加密,在后台进行比对,安全性比md5高一点,加密后生成 ...

  4. php 3 3公派算法代码,PHP常见算法合集代码实例

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一.文件夹遍历 function allFile($path = __DIR_ ...

  5. 关于AES算法及JAVA中的实现

    为什么80%的码农都做不了架构师?>>>    什么是AES 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法, ...

  6. Delphi与JAVA互加解密AES算法

    搞了半天终于把这个对应的参数搞上了,话不多说,先干上代码: package com.bss.util;import java.io.UnsupportedEncodingException; impo ...

  7. php最常见代码,PHP常见算法合集代码实例

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一.文件夹遍历<?php function allFile($path ...

  8. AES算法相关数学知识 - 素域学习

    在AES算法中的MixColumn层中会用到伽罗瓦域中的乘法运算,而伽罗瓦域的运算涉及一些数学知识如下: 素域 有限域有时也称伽罗瓦域,它指的是由有限个元素组成的集合,在这个集合内可以执行加.减.乘和 ...

  9. Adaboost算法原理分析和实例+代码(简明易懂)

    Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333   ...

最新文章

  1. xwpftemplate的时间设置_java poi设置生成的word的图片为上下型环绕以及其位置
  2. [跟我学UML] UML包图中的包引入和包合并
  3. nodejs事务使用总结
  4. 20位数字转化成6位不重复码_人力资源管理浅析身份证数字号码编排常识甄别年龄、性别、籍贯…...
  5. 昆仑通态复制的程序可以用吗_昆仑通态专题(七):MCGS组态软件的设备窗口...
  6. linux中cv调用摄像头,ubuntu中opencv调用摄像头
  7. 启动器和选择器学习-----(1)总括
  8. Pandas dtypes
  9. 程序员如何在 HTTPS 中高效配置通配符证书?| 技术头条
  10. ajax跨域问题解决(spring boot)
  11. 第三季-第21课-多线程同步
  12. idea添加scala环境_Scala(一)——scala+Idea环境配置
  13. linux系统管理员用户名为admin,Linux创建系统管理员用户
  14. 微信开发者工具的使用
  15. ECPC16-E. Jumping(bfs)
  16. mysql中没有sock文件_mysql.sock文件不见了问题的解决方法
  17. ROS:launch规范及用法
  18. canvas流星雨 数据流
  19. 【AI测试】人工智能测试整体介绍——第四部分
  20. 计算机物流管理,大学饮食管理计算机物流管理程序作用

热门文章

  1. Java中基本数据类型和引用数据类型的存放位置
  2. pandas基础(2)
  3. [Debug]内存问题的一些调试方法
  4. STM32程序的常用的两种烧录方式
  5. 我是一只温水中的青蛙
  6. LUA 编辑器 易语言版 源码
  7. Live800:从“雪糕刺客”爆火看差异化营销
  8. Linux的时间修改并永久生效
  9. OMAP的双核通信机制Codec Engine
  10. spring mvc 过滤器