当前位置: 首页 > news >正文

vue登陆密码加密,java后端解密

前端

  • 安装crypto-js
npm install crypto-js
  • 加密
//引入crypto-js
import CryptoJS from 'crypto-js';/** ---密码加密 start--- */
const SECRET_KEY = CryptoJS.enc.Utf8.parse("a15q8f6s5s1a2v3s");
const SECRET_IV = CryptoJS.enc.Utf8.parse("a3c6g5h4v9sss3v5");function encrypt(pwd) {let srcs = CryptoJS.enc.Utf8.parse(pwd);let encrypted = CryptoJS.AES.encrypt(srcs, SECRET_KEY, {iv: SECRET_IV ,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding})return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
/** ---密码加密end--- */

登陆之前调用encrypt给pwd加密

const password = encrypt(userInfo.password);

后端

解密工具类CryptoUtil

import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;/*** Description: 配合前端CryptoJS实现加密、解密工作。* CryptoJS 是一个 JavaScript 库,提供了一系列密码学函数和工具,用于加密、解密、生成摘要等任务。* 它支持多种加密算法,包括常见的对称加密算法(如 AES、DES)和非对称加密算法(如 RSA)。*/
public class CryptoUtil {//秘钥和偏移量,要和前端一样private final static String IV = "a3c6g5h4v9sss3v5";private final static String KEY = "a15q8f6s5s1a2v3s";/*** 加密算法,使用默认的IV、KEY* @param content* @return*/public static String encrypt(String content){return encrypt(content,KEY,IV);}/*** 解密算法,使用默认的IV、KEY* @param content* @return*/public static String decrypt(String content){return decrypt(content,KEY,IV);}/*** 加密方法* @param content* @param key* @param iv* @return*/public static String encrypt(String content, String key, String iv){try{Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");int blockSize = cipher.getBlockSize();byte[] dataBytes = content.getBytes();int plaintextLength = dataBytes.length;if (plaintextLength % blockSize != 0) {plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));}byte[] plaintext = new byte[plaintextLength];System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);SecretKeySpec keyspec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes("UTF-8"));cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);byte[] encrypted = cipher.doFinal(plaintext);return new Base64().encodeToString(encrypted);}catch (Exception e) {throw new RuntimeException("加密算法异常 CryptoUtil encrypt()加密方法,异常信息:" + e.getMessage());}}/*** 解密方法* @param content* @param key* @param iv* @return*/public static String decrypt(String content, String key, String iv){try {byte[] encrypted1 = new Base64().decode(content);Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);byte[] original = cipher.doFinal(encrypted1);return new String(original).trim();} catch (Exception e) {throw new RuntimeException("加密算法异常 CryptoUtil decrypt()解密方法,异常信息:" + e.getMessage());}}
}

解密

password= CryptoUtil.decrypt(password);

在这里插入图片描述

相关文章:

  • Jenkins+K8s实现持续集成(二)
  • [数据集][目标检测]药片药丸检测数据集VOC+YOLO格式152张1类别
  • 理解堆排序
  • Golang中的CAS操作
  • 算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长
  • 【操作系统】第五章 文件系统
  • odoo的采购询价单,默认情况下显示‘draft‘,‘sent‘,‘purchase‘,请问什么情况下才会显示‘to approve‘?
  • clean code-代码整洁之道 阅读笔记(第十一章)
  • 静态ip详解
  • Android面试题精选——再聊Android-Handler机制
  • 分类接口开发
  • [SAP ABAP] 排序内表数据
  • 计组--存储系统--复习专用...
  • 【iOS】#include、#import、@class、@import
  • 2024广东省职业技能大赛云计算赛项实战——Minio服务搭建
  • 2017 年终总结 —— 在路上
  • 5、React组件事件详解
  • Android系统模拟器绘制实现概述
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • angular组件开发
  • ESLint简单操作
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Go 语言编译器的 //go: 详解
  • Java的Interrupt与线程中断
  • Java多态
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spark RDD学习: aggregate函数
  • vue 个人积累(使用工具,组件)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 番外篇1:在Windows环境下安装JDK
  • 机器学习 vs. 深度学习
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 三分钟教你同步 Visual Studio Code 设置
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 数组的操作
  • 算法---两个栈实现一个队列
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微信小程序:实现悬浮返回和分享按钮
  • 为什么要用IPython/Jupyter?
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​flutter 代码混淆
  • ​业务双活的数据切换思路设计(下)
  • #pragma multi_compile #pragma shader_feature
  • ( 10 )MySQL中的外键
  • (03)光刻——半导体电路的绘制
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (ZT)薛涌:谈贫说富
  • (八)Flask之app.route装饰器函数的参数
  • (初研) Sentence-embedding fine-tune notebook
  • (独孤九剑)--文件系统