前端Vue CryptoJS和后端 Java的AES加密、解密

【加解密】前后端接口交互使用AES加解密 【加解密】前后端接口交互使用AES加解密。接口数据加解密是前后端分离开发非常常见的应用场景。 阅读详情

前段

安装依赖

npm install crypto-js --save
// 使用
import * as CryptoJS from 'crypto-js/crypto-js';

工具类

// 工具类
const CryptoUtil = require('crypto-js')
// 约定密钥(与后端密钥保持一致)
const key = CryptoUtil.enc.Utf8.parse('abcdefgabcdefg12')// 密钥16位长度字符   内容可自定义
const IV = CryptoUtil.enc.Utf8.parse('fc6cb28893f45be0')//  密钥偏移量    16位长度字符

/**
 * AES对称加密 (CBC模式,需要偏移量)
 * @param {Object} params 明文参数
 */
export function encrypt(params) {
  // 明文参数
  const str = CryptoUtil.enc.Utf8.parse(params)
  // 加密
  const encryptedData = CryptoUtil.AES.encrypt(str, key, {
    iv: IV,
    mode: CryptoUtil.mode.CBC, // AES加密模式
    padding: CryptoUtil.pad.Pkcs7 // 填充方式
  })
  return CryptoUtil.enc.Base64.stringify(encryptedData.ciphertext) // 返回base64格式密文
}

/**
 * AES对称解密
 * @param {Object} params 加密参数
 */
export function decrypt(params) {
  // base64格式密文转换
  const base64 = CryptoUtil.enc.Base64.parse(params)
  const str = CryptoUtil.enc.Base64.stringify(base64)
  // 解密
  const decryptedData = CryptoUtil.AES.decrypt(str, key, {
    iv: IV,
    mode: CryptoUtil.mode.CBC, // AES加密模式
    padding: CryptoUtil.pad.Pkcs7 // 填充方式
  })
  return CryptoUtil.enc.Utf8.stringify(decryptedData).toString() // 返回明文
}

后端

安装依赖

<!--binary.Base64 解加密使用-->
<dependency>
	<groupId>commons-codec</groupId>
	<artifactId>commons-codec</artifactId>
	<version>1.10</version>
</dependency>
<!--Lang3提供了许多Java库无法提供的辅助工具类,-->
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
</dependency>

工具类

package com.nlz.utils;

import java.math.BigInteger;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;

import sun.misc.BASE64Decoder;

/**
 * AES的加密和解密
 * @author libo
 */
public class Aes {
  //** (需要前端和后端保持一致)
  private static final String KEY = "abcdefgabcdefg12";
  //算法
  //获取Cipher对象的算法
  private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";

  /**
   * aes解密
   * @param encrypt   内容
   * @return
   * @throws Exception
   */
  public static String aesDecrypt(String encrypt) {
    try {
      return aesDecrypt(encrypt, KEY);
    } catch (Exception e) {
      e.printStackTrace();
      return "";
    }
  }

  /**
   * aes加密
   * @param content
   * @return
   * @throws Exception
   */
  public static String aesEncrypt(String content) {
    try {
      return aesEncrypt(content, KEY);
    } catch (Exception e) {
      e.printStackTrace();
      return "";
    }
  }

  /**
   * 将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[]
   * @throws Exception
   */
  public static byte[] base64Decode(String base64Code) throws Exception{
    return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);
  }


  /**
   * AES加密
   * @param content 待加密的内容
   * @param encryptKey 加***
   * @return 加密后的byte[]
   * @throws Exception
   */
  public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {
    KeyGenerator kgen = KeyGenerator.getInstance("AES");
    kgen.init(128);
    Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
    cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));

    return cipher.doFinal(content.getBytes("utf-8"));
  }


  /**
   * AES加密为base 64 code
   * @param content 待加密的内容
   * @param encryptKey 加***
   * @return 加密后的base 64 code
   * @throws Exception
   */
  public static String aesEncrypt(String content, String encryptKey) throws Exception {
    return base64Encode(aesEncryptToBytes(content, encryptKey));
  }

  /**
   * AES解密
   * @param encryptBytes 待解密的byte[]
   * @param decryptKey 解***
   * @return 解密后的String
   * @throws Exception
   */
  public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {
    KeyGenerator kgen = KeyGenerator.getInstance("AES");
    kgen.init(128);

    Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
    cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));
    byte[] decryptBytes = cipher.doFinal(encryptBytes);
    return new String(decryptBytes);
  }


  /**
   * 将base 64 code AES解密
   * @param encryptStr 待解密的base 64 code
   * @param decryptKey 解***
   * @return 解密后的string
   * @throws Exception
   */
  public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception {
    return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);
  }

  /**
   * 测试
   */
  public static void main(String[] args) throws Exception {
    String content = "test@1234";
    String encrypt = aesEncrypt(content, KEY);
    System.out.println("加密后:" + encrypt);
    String decrypt = aesDecrypt(encrypt, KEY);
    System.out.println("解密后:" + decrypt);
  }
}
前后端AES加密解密,前端使用CryptoJS,后端Java实现 前端使用CryptoJS 下载CryptoJS, Github : https://github.com/brix/crypto-js 一、使用CBC模式 1、前端实现 引入JS &amp;lt;script src=&quot;./js/crypto-js.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;./js/aes.js&qu 阅读详情

相关推荐

使用CryptoJS实现Vue前端加密,Java后台解密的步骤和方法

CryptoJS 是一个 JavaScript 库,提供了一系列密码学函数和工具,用于加密、解密、生成摘要等任务。它支持多种加密算法,包括常见的对称加密算法(如 AES、DES)和非对称加密算法(如 RSA)。同时,CryptoJS还包括了ECB和CBC两种模式,其中ECB模式:全称Electronic Codebook(电码本),在ECB模式中,每个明文分组都被单独加密,且每个明文分组都被加密为相同的密文分组。也就是说,如果两个明文分组相同,那么它们的密文分组也相同。CBC模式。

向心行者 7786

vue中AES加密解密

vue加密中aes加密解密crypto-js

only_zing的博客 1864

RSA+AES混合加密在前后端API安全通信中的原理与实践

在Web应用开发中,数据传输安全是核心议题。HTTPS提供了传输层加密,但在应用层,敏感数据仍需额外保护以防止服务器侧泄露。加密算法分为对称加密(如AES)和非对称加密(如RSA),前者加解密效率高但密钥分发困难,后者解决了密钥交换问题但性能较低。混合加密技术结合了两者优势,先用RSA安全传递密钥,再用AES高效加密业务数据,实现了安全与性能的平衡。该方案在**前后端分离架构**中价值显著,尤其适用于登录、支付等敏感**API接口**场景。本文以RuoYi-Vue-Plus框架为例,深入解析其集成设计与工程

weixin_29323273的博客 331

vue前端使用CryptoJS加密传输请求参数,后端使用java解密

安装完成后引入CryptoJS(路径按需引入)单独新建一个des.js写加解密代码。直接复制即可使用,但是前端CryptoJS需要自己安装。此文章使用 CryptoJS作为加解密。没有安装的直接在项目的根目录下安装即可。在vue页面引入该js。......

Mr丶GUO 1467

使用CryptoJS对请求参数进行MD5/AES加解密(后端)

通过使用CryptoJS库,我们可以在后端对请求参数进行MD5哈希和AES加解密操作,以增强数据的安全性。在后端中,我们可以使用CryptoJS的AES模块进行加解密操作。在后端开发中,对请求参数进行加密是一种常见的安全措施。在这篇文章中,我们将介绍如何使用CryptoJS库对请求参数进行MD5哈希和AES加解密的操作。在后端中,我们可以使用CryptoJS的MD5模块来进行加密。转换为字符串,并使用CryptoJS的MD5模块对字符串进行哈希加密。方法对请求参数进行加密,并将加密结果存储在。

UgmbRuby的博客 2277

前端vue CryptoJS Aes CBC加密后端java解密,如何实现?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1566

Web前后端笔记-vue cli及java进行AES加解密

这里我直接贴代码了。 vue cli中,要先导入 npm install crypto-js vue代码如下: import axios from 'axios' import cryptoJS from "crypto-js/crypto-js"; axios.defaults.timeout = 35 * 1000; /** * Get方法 * @param {*} url * @param {*} params */ export function fetch(url, pa

IT1995的博客 1132

手把手教你用示波器抓取MIPI D-PHY波形:从LP11到HS Burst的完整信号解析

本文详细介绍了使用示波器精准捕获MIPI D-PHY信号的关键技巧,包括探头选择、示波器参数设置、信号状态解析及高级触发配置。通过实战案例和波形分析,帮助工程师快速识别从LP11到HS Burst的各种信号状态,解决常见的信号完整性问题,提升调试效率。

weixin_30471561的博客 559

VUE-AES算法前后端加解密

AES算法介绍

爱码农的小java的博客 1354

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了7个排查'Floating point exception'错误的实用步骤,包括边界条件检查、时间步长优化、求解器配置等关键技巧。通过系统化的诊断流程,帮助用户快速定位并解决CFD仿真中的浮点异常问题,提升计算稳定性。

weixin_42531886的博客 285

HDMI2.1 FRL流控 概览

HDMI 2.1 FRL的流控本质是。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 2080

Vue使用CryptoJS实现加密,Java后台解密的步骤和方法

CryptoJS 是一个 JavaScript 库,提供了一系列密码学函数和工具,用于加密、解密、生成摘要等任务。它支持多种加密算法,包括常见的对称加密算法(如 AES、DES)和非对称加密算法(如 RSA)。同时,CryptoJS还包括了ECB和CBC两种模式,其中ECB模式:全称Electronic Codebook(电码本),在ECB模式中,每个明文分组都被单独加密,且每个明文分组都被加密为相同的密文分组。也就是说,如果两个明文分组相同,那么它们的密文分组也相同。

weixin_40052298的博客 1136

从零搭建UVM验证环境:新手入门实践指南

在数字芯片验证领域,SystemVerilog和UVM(Universal Verification Methodology)是构建高效验证环境的核心技术。其原理基于面向对象编程和事务级建模,通过组件化架构实现验证的复用性和自动化。这一方法学的技术价值在于显著提升验证效率与质量,广泛应用于处理器、通信芯片等复杂设计的验证场景。本文聚焦于UVM验证环境的搭建实践,通过一个加法器实例,详细解析了uvm_driver、uvm_monitor、uvm_sequence等关键组件的协同工作机制,并提供了基于Quest

weixin_30015371的博客 445

【AES加密/解密——MQ】

AES加密/解密代码整合--MQ。一键复制粘贴即可使用!!!!!!!!!!

weixin_42588676的博客 571

代谢组数据分析(三):代谢组降维分析

本文详细介绍了代谢组学中常用的降维分析方法,包括PCA、PLS-DA和OPLS-DA。PCA通过线性变换降低数据维度,便于数据可视化和异常值检测;PLS-DA是一种有监督的模式识别方法,适用于分类和预测;OPLS-DA通过正交分解避免过拟合,更准确地筛选差异代谢物。降维分析在揭示样本间差异和发现生物标志物方面具有重要意义

专注生信领域 3790

得物(毒)App潮鞋价格波动监控系统实战:从爬虫开发到数据可视化完整指南

本文将带领您从零开始构建一套完整的得物潮鞋价格监控系统,涵盖爬虫开发、数据存储、价格波动分析和可视化展示等全流程技术。我们将使用最新的Python技术栈,包括异步爬虫框架、智能代理池、反爬虫绕过技巧,以及基于机器学习的时间序列预测模型。无论您是想要追踪特定鞋款价格的潮流爱好者,还是希望构建商业级监控系统的开发者,这篇文章都将为您提供切实可行的解决方案。

2201_76125261的博客 2503

CryptoJS实现加密+Java后台解密

CryptoJS 是一个 JavaScript 库,提供了一系列密码学函数和工具,用于加密、解密、生成摘要等任务。它支持多种加密算法,包括常见的对称加密算法(如 AES、DES)和非对称加密算法(如 RSA)。同时,CryptoJS还包括了ECB和CBC两种模式,其中ECB模式:全称Electronic Codebook(电码本),在ECB模式中,每个明文分组都被单独加密,且每个明文分组都被加密为相同的密文分组。也就是说,如果两个明文分组相同,那么它们的密文分组也相同。

helenbin14的博客 2580

上机任务一:空气质量指数 (air quality index,AQI是定量描述空气质量状况的指数。为了更好地了解和人们身体健康息息相关的天气状况,本书模拟生成500条某地区天气数据,一行样本对应一天

调整后的R平方为0.4308,考虑了模型中的自由度,它略低于多重R平方,说明模型的解释能力可能有限。总的来说,新的模型相对于之前的模型在AIC值上更优,包含了最高温度(X2)和最低温度(X3)这两个重要的预测因子,并且对AQI的解释能力较好。在表中,Df表示自由度,Sum Sq表示总平方和,Mean Sq表示均方(总平方和除以自由度),F value表示F统计量,Pr(>F)表示对应的p值。在分析这些结果时,需要关注系数的显著性(p值),系数的方向(正向或负向影响),以及系数的大小(估计值)。

Mrrunsen的博客 722

springboot+vue AES加密使用

/"算法/模式/补码方式"NoPadding PkcsPadding。// psd是需要加密的字符,pwd是加密后的字符。// 默认的 KEY 与 iv 如果没有给。* @param data 要加密的数据。* @param pwd 要解密的数据。* @param key 加密key。* @param sig 校验的签名。* @param key 解密key。* @param iv 加密iv。* key和iv值可以随机生成。* @return 加密的结果。* @return 解密的结果。

strongsto的博客 1116

基于逆向工程的中国裁判文书网爬虫技术深度解析

本文详细介绍了中国裁判文书网爬虫的开发过程,涵盖了从基础爬取到高级功能的完整解决方案。逆向工程分析:理解网站的反爬机制和加密逻辑浏览器自动化:使用Playwright模拟真实用户行为参数加密:通过JavaScript执行环境生成加密参数智能调度:控制请求频率,避免被检测错误处理:完善的异常处理和重试机制。

2201_76125261的博客 2144

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Vue中使用crypto-js实现前端加密后端解密的功能

Vue中使用crypto-js实现前端加密后端解密的功能

weixin_42476120的博客 3231

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

vue前端密码加密,后端密码解密

一、前端VUE: 1、安装 npm install crypto-js 2、创建工具类(src/utils/asc.js) import CryptoJS from 'crypto-js' // 需要和后端一致 const KEY = CryptoJS.enc.Utf8.parse('1234567890123456'); const IV = CryptoJS.enc.Utf8.parse('1234567890123456'); export default { /** * 加密

weixin_45448129的博客 9653

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vue java aes加密_vue java 使用AES 前后端加密解密

最近在项目中需要针对重要数据进行加密传输在网上找了一大推加密方式 最终采用AES 加密1、java端package com.zk.web.util;/*** AES 128bit 加密解密工具类* @author dufy*/import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import javax.c...

weixin_35080040的博客 400

前端CryptoJS和后端(java python)crypto实现前后端密码加密解密功能

前端代码 // 1. vue package.json 引入crypto-js的依赖:"crypto-js": "^4.0.0", // 导入 import CryptoJS from 'crypto-js'; // 这两个必须是16位前后端一致 const key = CryptoJS.enc.Utf8.parse('FaceSunAweSome_K'); const iv = CryptoJS.enc.Utf8.parse('FaceSunAweSomeIV'); // 加密 const encr

GC 1820

Vue前端AES加密与Java后端解密的完整实现指南

本文详细介绍了Vue前端使用CryptoJS实现AES加密与Java后端解密的完整实现指南。通过CBC模式确保数据传输安全,提供密钥配置、加密方法实现及前后端联调技巧,帮助开发者快速掌握前后端加密传输的最佳实践。

weixin_29323273的博客 289
上一篇: react redux 状态管理
下一篇: vite-admin框架搭建,ESLint + Prettier 语法检测和代码格式化
脑瓜不疼
博客等级 码龄9年 84粉丝 124原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值