最近在项目中需要针对重要数据进行加密传输

在网上找了一大推加密方式 最终采用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.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;public class AesEncryptUtil {//使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!private static String KEY = "1234567890123456";private static String IV = "1234567890123456";/*** 加密方法* @param data  要加密的数据* @param key 加密key* @param iv 加密iv* @return 加密的结果* @throws Exception*/public static String encrypt(String data, String key, String iv) throws Exception {try {Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");//"算法/模式/补码方式"NoPadding PkcsPaddingint blockSize = cipher.getBlockSize();byte[] dataBytes = data.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(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);byte[] encrypted = cipher.doFinal(plaintext);return new Base64().encodeToString(encrypted);} catch (Exception e) {e.printStackTrace();return null;}}/*** 解密方法* @param data 要解密的数据* @param key  解密key* @param iv 解密iv* @return 解密的结果* @throws Exception*/public static String desEncrypt(String data, String key, String iv) throws Exception {try {byte[] encrypted1 = new Base64().decode(data);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);String originalString = new String(original);return originalString;} catch (Exception e) {e.printStackTrace();return null;}}/*** 使用默认的key和iv加密* @param data* @return* @throws Exception*/public static String encrypt(String data) throws Exception {return encrypt(data, KEY, IV);}/*** 使用默认的key和iv解密* @param data* @return* @throws Exception*/public static String desEncrypt(String data) throws Exception {return desEncrypt(data, KEY, IV);}/*** 测试*/public static void main(String args[]) throws Exception {String test1 = "sa";String test =new String(test1.getBytes(),"UTF-8");String data = null;String key =  KEY;String iv = IV;// /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4= data = encrypt(test, key, iv);System.out.println("数据:"+test);System.out.println("加密:"+data);String jiemi =desEncrypt(data, key, iv).trim();System.out.println("解密:"+jiemi);}}


可以看到 sa 经过加密  COgQPJgLX+gLJGXkKGznJQ==

 2、前端

 vue  引入

npm install crypto-js

写相关js 函数

import CryptoJS from 'crypto-js/crypto-js'// 默认的 KEY 与 iv 如果没有给
const KEY = CryptoJS.enc.Utf8.parse("1234567890123456");
const IV = CryptoJS.enc.Utf8.parse('1234567890123456');
/*** AES加密 :字符串 key iv  返回base64 */
export function Encrypt(word, keyStr, ivStr) {let key = KEYlet iv = IVif (keyStr) {key = CryptoJS.enc.Utf8.parse(keyStr);iv = CryptoJS.enc.Utf8.parse(ivStr);}let srcs = CryptoJS.enc.Utf8.parse(word);var encrypted = CryptoJS.AES.encrypt(srcs, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});// console.log("-=-=-=-", encrypted.ciphertext)return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);}
/*** AES 解密 :字符串 key iv  返回base64 **/
export function Decrypt(word, keyStr, ivStr) {let key  = KEYlet iv = IVif (keyStr) {key = CryptoJS.enc.Utf8.parse(keyStr);iv = CryptoJS.enc.Utf8.parse(ivStr);}let base64 = CryptoJS.enc.Base64.parse(word);let src = CryptoJS.enc.Base64.stringify(base64);var decrypt = CryptoJS.AES.decrypt(src, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);return decryptedStr.toString();
}

---

在相关模块中引入
import {Decrypt,Encrypt} from '@/plugins/cryptojs'

在vue  data()中定义 2个测试变量 d1,d2

在 template插入

<div>原数据: <el-input v-model="d1" placeholder="请输入内容"></el-input><el-button type="primary" @click="jiami" plain>加密</el-button><el-button type="primary" @click="jiemi" plain>解密</el-button>加密数据: <el-input v-model="d2" placeholder="请输入内容"></el-input></div>

在methods  插入函数

jiami(){console.log("加密-----",this.d1);let dd = Encrypt(this.d1)console.log(dd)this.d2= dd},jiemi(){console.log("解密-----",this.d2);this.d1= Decrypt(this.d2)},

效果

最终 完成 想要的功能.

转载于:https://www.cnblogs.com/yucm/p/9124655.html

vue java 使用AES 前后端加密解密相关推荐

  1. Vue前端和Java后端 联调使用AES 前后端加密解密

    Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...

  2. AES前后端加密解密

    AES前后端加密 关于AES-来自百度百科 后端代码 前端代码 关于AES-来自百度百科 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称R ...

  3. angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现

    今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...

  4. java前后端加密解密crypto-js

    项目场景: 适用于接口数据敏感信息,比如 明文传输姓名.居住地址.手机号等信息,如果存在明文传输敏感数据问题.及数据泄漏风险,则可使用此方法加密解密. 一.下载crypot-js 1.如果为vue项目 ...

  5. 前后端加密解密 【JS加密模块(md5 、 crypto 、 crypto-js、jsencrypt) python RSA加密解密(pycryptodome )模块安装与使用】

    JS加密模块[js-md5(AES) . crypto (AES). crypto-js().jsencrypt(非对称加密.RSA)] 一.安装 npm install js-md5 npm ins ...

  6. AES和RSA前后端加解密

    先了解AES和RSA加密算法 AES算法 1.运算速度快,在有反馈模式.无反馈模式的软硬件中,Rijndael都表现出非常好的性能. 2.对内存的需求非常低,适合于受限环境. 3.Rijndael 是 ...

  7. aes 加密_结合RSA与AES实现前后端加密通信

    结合RSA与AES实现前后端加密通信 一.思路 使用RSA秘钥生成工具生成一对公钥(A)和私钥(B),前端保留A,后端保留B. 前端发送数据时,先生成一串随机16位字符串作为AES的秘钥(C),然后使 ...

  8. 1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍

    java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...

  9. Go Nodejs Java Aes 128 ECB加密解密结果保持一致

    在多语言的生产环境下,常常是由一种语言进行加密而由另一种语言来进行解密,因此有必要保持各种语言之间加密解密算法的一致性.下面列出了Go,Nodejs,Java 的 Aes-128-Ecb的加密解密算法 ...

最新文章

  1. android 获取网卡mac_防亚马逊账号关联黑科技--如何修改我们的网卡MAC到底重要不?...
  2. docker run 挂载卷_如何在构建期间将主机卷挂载到Dockerfile中的Docker容器中
  3. 宁波网络推广分享能让新站提升收录的技巧!
  4. MongoDB增加用户认证:增加用户、删除用户、修改用户密码、读写权限、只读权限...
  5. Thread类源码剖析
  6. 从U盘自动安装centos5.3到服务器
  7. 五十四、快速上手uniapp
  8. 十一、Grafana监控系统
  9. Vue——[Props with type Object/Array must use a factory function to return the default value.]解决方案
  10. [BZOJ 1076][SCOI2008]奖励关(期望+状压Dp)
  11. nginx版本升级到1.10
  12. Web 2.0 编程思想:16条法则
  13. Educational Codeforces Round 81 (Rated for Div. 2) D. Same GCDs 欧拉函数\莫比乌斯
  14. java jsp导出pdf文件_JSP页面导出PDF格式文件
  15. JQuery.Ajax用法
  16. 计算机系统-电路设计02-与门电路
  17. redis高级进阶(2)
  18. C语言二级操作题满分班(2015年9月方法篇)-叶冬冬-专题视频课程
  19. 【C语言】 《弹跳的小球》游戏编写过程及思路,清屏函数、Sleep()函数的应用
  20. 关于软件定时器的一些讨论

热门文章

  1. hdu5643 King's Game(约瑟夫环+线段树)
  2. DT大数据梦工厂 第51讲
  3. python中并发编程基础1
  4. undo系统参数详解
  5. .NET常见问题汇总
  6. 从阿里云下载图片到本地
  7. jQuery——stop
  8. C#全局键盘监听(Hook)
  9. kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)
  10. NSS_06 extjs弹出窗口上的文本框默认获得焦点