先上前端代码

import cryptoJs from 'crypto-js'
let keyOne = 'ZHyXgjF7BejeJySh5vX4O6qE'export default {//加密encrypt(word){var key = cryptoJs.enc.Utf8.parse(keyOne);var srcs = cryptoJs.enc.Utf8.parse(word);var encrypted = cryptoJs.AES.encrypt(srcs, key, {mode:cryptoJs.mode.ECB,padding: cryptoJs.pad.Pkcs7});return encrypted.toString();
},//解密decrypt(word){var key = cryptoJs.enc.Utf8.parse(keyOne);var decrypt = cryptoJs.AES.decrypt(word, key, {mode:cryptoJs.mode.ECB,padding: cryptoJs.pad.Pkcs7});return cryptoJs.enc.Utf8.stringify(decrypt).toString();
}}

在上后台代码

package com.kmnfsw.server.utils;import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Random;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;import sun.misc.BASE64Decoder;/*** AES的加密和解密*/
public class Aes {public static void main(String[] args) throws Exception {String content = "123";System.out.println("加密前:" + content);System.out.println("加密密钥和解密密钥:" + KEY);String encrypt = aesEncrypt(content);System.out.println("加密后:" + encrypt);String decrypt = aesDecrypt(encrypt);System.out.println("解密后:" + decrypt);System.out.println("=========================================");String aesRandomKey = getAESRandomKey();String randomString = getRandomString(24);System.out.println("随机秘钥1=" + aesRandomKey);System.out.println("随机秘钥2=" + randomString);}//密钥 (需要前端和后端保持一致)private static  final String KEY = "ZHyXgjF7BejeJySh5vX4O6qE";//算法private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";/*** 随机生成密钥* 纯数字*/public static String getAESRandomKey() {SecureRandom random = new SecureRandom();long randomKey = random.nextLong();return String.valueOf(randomKey);}/*** 生成的字符串每个位置都有可能是str中的一个字母或数字* @param length 用户要求产生字符串的长度*/public static String getRandomString(int length){String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";Random random=new Random();StringBuffer sb=new StringBuffer();for(int i=0;i<length;i++){int number=random.nextInt(62);sb.append(str.charAt(number));}return sb.toString();}/*** 将byte[]转为各种进制的字符串* @param bytes byte[]* @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制* @return 转换后的字符串*/public static String binary(byte[] bytes, int radix){return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数}/*** base 64 encode* @param bytes 待编码的byte[]* @return 编码后的base 64 code*/public static String base64Encode(byte[] bytes){return Base64.encodeBase64String(bytes);}/*** base 64 decode* @param base64Code 待解码的base 64 code* @return 解码后的byte[]*/public static byte[] base64Decode(String base64Code) throws Exception{return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);}/*** AES加密* @param content 待加密的内容* @return 加密后的byte[]*/public static byte[] aesEncryptToBytes(String content) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128);Cipher cipher = Cipher.getInstance(ALGORITHMSTR);cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY.getBytes(), "AES"));return cipher.doFinal(content.getBytes("utf-8"));}/*** AES加密为base 64 code* @param content 待加密的内容* @return 加密后的base 64 code*/public static String aesEncrypt(String content) throws Exception {return base64Encode(aesEncryptToBytes(content));}/*** AES解密* @param encryptBytes 待解密的byte[]* @param decryptKey 解密密钥* @return 解密后的String*//* public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");// 此类提供加密的强随机数生成器 (RNG),该实现在windows上每次生成的key都相同,但是在部分linux或solaris系统上则不同。// SecureRandom random = new SecureRandom(key.getBytes());// 指定算法名称,不同的系统上生成的key是相同的。SecureRandom random = SecureRandom.getInstance("SHA1PRNG");random.setSeed(decryptKey.getBytes());//AES 要求密钥长度为 128kgen.init(128, random);//使用密钥初始化,设置为解密模式Cipher cipher = Cipher.getInstance(ALGORITHMSTR);cipher.init(Cipher.DECRYPT_MODE,  new SecretKeySpec(kgen.generateKey().getEncoded(), "AES"));byte[] decryptBytes = cipher.doFinal(encryptBytes);return new String(decryptBytes);}*//*** AES解密* @param encryptBytes 待解密的byte[]* @return 解密后的String*/public static String aesDecryptByBytes(byte[] encryptBytes) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128);Cipher cipher = Cipher.getInstance(ALGORITHMSTR);cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY.getBytes(), "AES"));byte[] decryptBytes = cipher.doFinal(encryptBytes);return new String(decryptBytes);}/*** 将base 64 code AES解密* @param encryptStr 待解密的base 64 code* @return 解密后的string*/public static String aesDecrypt(String encryptStr) throws Exception {return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr));}}

需要的依赖jar:

<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version>
</dependency>
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version>
</dependency>

JS前端加密和Java后端的AES加密和解密相关推荐

  1. Java中的AES加密和解密(CBC模式)

    通过有线方式传输诸如纯文本密码之类的机密数据总是容易受到安全性的影响,始终建议对此类信息进行加密并使用SSL传输这些机密数据.Java为此提供了多种加密算法.在本文中,我们将讨论Java中具有CBC模 ...

  2. java后台开发加密程序_Java后端实现MD5加密的方法

    前言 在我们开发是要考虑这个功能,当用户忘记密码的情况下,我们需要动态的发给他一个6位的随机密码,通过即时通,短信,微信等.并同时修改数据库中的原密码为这6位的随机密码.让用户再去修改密码. 同时在数 ...

  3. java如何实现aes加密_Java 如何实现AES加密

    做360广告的对接需要对密码进行AES加密,下面是点睛平台文档的描述: (AES模式为CBC,加密算法MCRYPT_RIJNDAEL_128)对MD5加密后的密码实现对称加密.秘钥是apiSecret ...

  4. 前端CryptoJS和Java后端数据互相加解密(AES)

    目录 一.序言 二.关于前端CryptoJS 1.CryptoJS简单介绍 2.加密和填充模式选择 3.前端AES加解密示例 (1) cryptoutils工具类 (2) 测试用例 (3) 加解密后输 ...

  5. 加密前端传参和后端结果返回加密

    好的,我分别给出一个简单的前端代码样例和后端 Node.js 代码样例,示范如何加密前端传参和后端结果返回的加密. 前端代码示例: import CryptoJS from 'crypto-js';c ...

  6. cbc cryptojs 前后端_前端CryptoJS AES/DES加解密与后端PHP AES/DES加解密

    本文涉及到的内容有:前端使用CryptoJS对数据进行DES或AES加密解密: 后端使用PHP openssl对数据进行解密和加密. 前端AES加密数据 首先在vue环境下安装crypto-js,cr ...

  7. java linux aes_java AES 加密和linux解密

    java AES 加密:package app; import static java.nio.charset.StandardCharsets.US_ASCII; import static jav ...

  8. [JAVA实战篇] AES加密的JAVA实现及AES算法讲解

    AES加密算法原理 1. S-P结构加密 AES加密算法是2001年由美国提出的互联网加密算法,从密码学的角度来讲,AES是典型的S-P结构加密.什么是S-P结构加密呢,手残博主画了一张图帮助大家理解 ...

  9. java实现数据AES加密

    1.AES加密 AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准. AES是基于数据块的加密方式,也就是说,每次处理的数据是一块(16字节),当数据不是16字节的倍数时填充,这 ...

最新文章

  1. KerGNNs:结合Graph kernels的可解释GNN
  2. 速度×6,模型缩小20倍:用华为华科的TinyBERT做搜索,性能达BERT 90%
  3. MBEWH-查看历史期间的移动平均价
  4. 用友软件工程IT应用研究院
  5. python日历模块_Python日历模块| prmonth()方法与示例
  6. Arduino笔记-人体热释电外传感器使用
  7. 结合上下文和篇章特征的多标签情绪分类
  8. 给ecshop后台增加管理功能页面
  9. 实战:详解Reaact+AntD+Node后台管理系统
  10. jeesit 基于springMVC + mybatis配置多数据源的问题
  11. 2023年南昌大学电子信息考研考情与难度、参考书及上岸前辈经验
  12. 《Xenogears》(异度装甲)隐含的原型与密码
  13. 什么是Java面向对象OOP
  14. SLF4J日志框架在项目中使用
  15. JavaScript_ES5和ES6
  16. android实时监控屏幕代码,Android 屏幕切换监听的实例代码
  17. 统计学习(四):重抽样方法
  18. 什么是跨境电商ERP系统
  19. 套利交易 套利模型 套利策略 期货套利模型 设计 跨期套利
  20. context capture如进行空三迁移

热门文章

  1. 游戏3D美术有前景吗?需不需要培训,
  2. 德州中考计算机考试试题,德州信息技术中考备考样题4综合
  3. 大传媒时代报业如何驾驭新媒体
  4. 未来三年最赚钱的一个机会
  5. photoshop第十二章:制作唯美效果
  6. PyTorch深度学习60分钟入门与实战(四)训练分类器
  7. springmvc框架后台Date类型字段接收数据
  8. Git 命令在线练习
  9. TortoiseSVN-1.7.12.24070-x64-svn-1.7.9安装包和汉化包
  10. CAD重复圆绘制机械图形