首页 > 编程语言 >java、vue基于hutool的aes指定秘钥加密(前后端aes加解密)

java、vue基于hutool的aes指定秘钥加密(前后端aes加解密)

时间:2023-07-04 17:23:10浏览次数:53  
标签:aes vue java iv parse enc let CryptoJS

 

后端代码
//加密 data 对称AES Key
byte[] key = getBytes("._^BV67nW6ck8fwg", 16);//秘钥长度最好是16位
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);
String jsondata = aes.encryptHex("中国test");
System.out.println(jsondata);
//解密,加密模式ecb,填充pkcs7,数据库128位,迁移量无,输出hex16进制,字符集utf-8
String decryptStr = aes.decryptStr(jsondata, CharsetUtil.CHARSET_UTF_8);
System.out.println(decryptStr);

 前端vue代码

utils文件夹下新建encryp.js

import CryptoJS from 'crypto-js'
// 加密
export default {
  encrypt(word, keyStr, iv) {
    let keys = CryptoJS.enc.Utf8.parse(keyStr); 
    let ivs = CryptoJS.enc.Utf8.parse(iv); 
    let srcs = CryptoJS.enc.Utf8.parse(word);
    let encrypted = CryptoJS.AES.encrypt(srcs, keys, {
      iv: ivs,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    console.log("base64:" + encrypted);
    var encryptedStr = encrypted.ciphertext.toString();
    console.log("16进制:" + encryptedStr);
    return encrypted.ciphertext.toString().toUpperCase();  //16进制
  },
  // }
  // 解密
  decrypt(word, keyStr, iv) {
    // ********************解密16进制***********************
    let key = CryptoJS.enc.Utf8.parse(keyStr);
    let ivs = CryptoJS.enc.Utf8.parse(iv);
    let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
    let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    let decrypt = CryptoJS.AES.decrypt(srcs, key, {
      iv: ivs,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    console.log(decryptedStr)
    return decryptedStr.toString();
  }

}

使用

import Crypto from "@/utils/encryp.js"; //很多页面要使用时也可以再main.js中定义:import Crypto from "@/utils/encryp.js";Vue.prototype.$crypto = Crypto; 页面中调用: var t = $crypto.encrypt('中国test',"._^BV67nW6ck8fwg","");



var t = Crypto.encrypt('中国test',"._^BV67nW6ck8fwg",""); 
console.log(t);

 



标签:aes,vue,java,iv,parse,enc,let,CryptoJS
From: https://www.cnblogs.com/privateLogs/p/17526178.html

相关文章

  • Java获取CPU占用率、内存占用率
    @TestpublicvoidtestSystemUsage(){finallongGB=1024*1024*1024;while(true){OperatingSystemMXBeanoperatingSystemMXBean=ManagementFactory.getOperatingSystemMXBean();StringosJson=JSON.toJSO......
  • 七月四号Java学习
    今天在Java中学习到字面量和变量   ......
  • Java-基本语法回顾总结[25-36]
    常用的JVM启动参数有哪些?线程安全的理解?守护线程的理解?threadlocal的底层原理(25)常用的JVM启动参数有哪些?(26)线程安全的理解?(27)守护线程的理解?(28)threadlocal的底层原理(29)并发、并行与串行之间的区别?(30)Java死锁应如何避免?(31)......
  • vue 基于 CountUp.js,可用于创建显示数字数据的动画。
    地址:https://github.com/xlsdg/vue-countup-v2Installation$npminstall--savecountup.jsvue-countup-v2Usage<template><divclass="iCountUp"><ICountUp:delay="delay":endVal="endVal"......
  • vue-cropper cdn vue3 打包后提示找不到
    vue-croppercdnvue3打包后bug vue3项目tscdn引入  vue-cropper官网推荐引入方式   dev环境报错运行不了后面发现打包后找不到  VueCropper,原来是名称问题, 修改如下:main.ts直接引入 再添加脚本到html文件window.VueCropper=window['vue-cropper'......
  • vue3+tiff.js展示tif文件
    vue3+tiff.js展示tif文件场景:tif格式的文件需要在页面上预览(预览的tif文件较小)组件:tiff.jsnpminstalltiff.js组件引入:import'tiff.js';注意:网络上的信息引入使用importTifffrom'tiff.js'  但是实际测试这样会报错: 看源码发现只需要直接import即可获......
  • java后台删除当前节点及其子节点-递归
    一、表设计 二、entityimportcom.fasterxml.jackson.annotation.JsonIgnore;importcom.joyoung.cloud.security.common.entity.BaseEntity;importio.swagger.annotations.ApiModel;importio.swagger.annotations.ApiModelProperty;importlombok.Data;importlombok......
  • Java数组
    Java数组数组概述1.数组概述1.相同类型变量的有序集合2.数组的声明和创建1.dataType[]arrayRefVar2.dataType[]arrayRefVar=newdataType[arraySize]内存分析1.声明数组int[]array=null;在栈中声明了array2.创建数组array=newint[10];在......
  • java+geotools (geotools for java)
    geotools所需的依赖,在pom.xml引入;<dependencies><!--forgeotoolsbegin--><!--处理空间数据--><!--geotools主要依赖--><dependency><groupId>org.geotools</groupId><artifa......
  • java工具类static静态方法读取yml配置
    当我们需要在工具类中获取yml配置的时候,由于变量是staic导致获取不到yml配置因为spring加载静态方法比IOC早,所以不能直接使用@Value注解读取yml配置,读取结果是null。@ComponentpublicclassTestUtil{//使用@Value注解读取yml配置的数据@Value("${test.url}")......