日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

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

發布時間:2025/6/17 vue 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.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 前后端加密解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产大片一区二区 | 日日夜夜精品视频免费 | 欧美成人午夜影院 | 草莓巧克力香氛动漫的观看方法 | 欧美干干 | 日本精品久久 | 欧美成人精品二区三区99精品 | 日本韩国视频 | 男男受被啪到高潮自述 | 午夜视频免费看 | 91爽爽| av片手机在线观看 | 国产精品久久久久久亚洲毛片 | 亚洲图片欧美激情 | 涩涩免费网站 | 亚洲色图欧美在线 | 国产成人精品一区在线播放 | aa视频在线观看 | caoporen在线 | 亚洲视频一二三四 | 好大好爽视频 | 国产精品久久久久久免费播放 | 亚洲伦理影院 | 日本亲近相奷中文字幕 | jizz俄罗斯 | 亚洲黄色自拍 | 中文字幕在线免费观看视频 | 欧洲黄色网 | 国产精品视频你懂的 | 国产一二精品 | 国产欧美一区二区精品忘忧草 | jizz一区二区 | 99ri国产| 91禁动漫在线 | 国产视频一区二区在线 | 人妻熟女一区二区aⅴ水 | 999色综合 | av网站网址 | 99ri视频 | 国产精品性色 | xx视频在线| 无码gogo大胆啪啪艺术 | 2019中文在线观看 | 亚洲美女一区 | 一久久久久 | 国产精品久久久久久久久久久新郎 | 91久久久久国产一区二区 | 天天干天天要 | 亚洲高清在线免费观看 | 黄色视屏在线播放 | 国产在线观看免费播放 | 久久久久久网址 | 亚洲免费黄网 | 日本成人免费在线 | 国产精品免费一区二区三区四区 | 黄色成人在线网站 | 国产在线欧美在线 | 国产精品va在线观看无码 | 91岛国| 国产永久免费视频 | 国产少女免费观看高清 | 绿帽人妻精品一区二区 | 毛片网络 | av在观看 | 一本大道熟女人妻中文字幕在线 | 成为性瘾网黄的yy对象后 | 国产一二三在线视频 | 黄色工厂在线观看 | 果冻av在线 | 日韩欧美99| 92国产精品 | 在线观看三级视频 | 9色在线视频 | 国产在线xxx | 欧美 国产 精品 | 久久国产香蕉 | 91九色在线视频 | 国产成人av免费看 | 少妇精品高潮欲妇又嫩中文字幕 | 伊人啪啪 | 中文字幕一区二区在线老色批影视 | 国产精品av在线 | 免费看av网| 在线成年人视频 | 99re这里只有精品在线 | 亚洲第一二三区 | 国产大片av | 狠狠撸狠狠干 | 91亚瑟| 在线网站av | 国产欧美网站 | 热九九精品 | 777午夜 | 日本特黄一级 | 亚洲综合小说网 | 亚洲成a | 四虎永久在线观看 | 午夜精品视频在线观看 | 成人一区二区免费视频 |