crypto-js對稱加密解密的使用方式詳解(vue與java端)
一、vue前端
1.1、安裝crypto-js
npm install crypto-js
1.2、創(chuàng)建加密解密jsAES.js
import CryptoJS from 'crypto-js'
/**
* AES加密處理(CBC模式)
*/
export function encryptCBC(word, keyStr, ivStr) {
// 16位數(shù)隨機碼
keyStr = keyStr ? keyStr : "Ej7SdjOBvlv2PubN";
ivStr = ivStr ? ivStr : "Ej7SdjOBvlv2PubN";
let key = CryptoJS.enc.Utf8.parse(keyStr);
let iv = CryptoJS.enc.Utf8.parse(ivStr);
var encryptedData = CryptoJS.AES.encrypt(word, key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
return encryptedData.toString();
}
/**
* AES解密處理(CBC模式)
*/
export function decryptCBC(word, keyStr, ivStr) {
word = (word + '').replace(/\n*$/g, '').replace(/\n/g, ''); // 這一行,將換行符替換為空
// 密鑰
keyStr = keyStr ? keyStr : "Ej7SdjOBvlv2PubN";
// 向量
ivStr = ivStr ? ivStr : "Ej7SdjOBvlv2PubN";
var key = CryptoJS.enc.Utf8.parse(keyStr);
let iv = CryptoJS.enc.Utf8.parse(ivStr);
var decrypt = CryptoJS.AES.decrypt(word, key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
)
return decrypt.toString(CryptoJS.enc.Utf8)
}
1.3、使用(vue文件或者js中)
import { encryptCBC } from '@/js/util/AES'
export function test1(){
var a1 = encryptCBC("張三");
console.log('加密后的數(shù)據(jù):',a1 )
}
二、java后端的使用方式
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Security;
import java.util.Base64;
public class AESUtil {
// AES密鑰算法
private static final String KEY_ALGORITHM = "AES";
// 加密/解密算法/工作模式/填充方式
private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";
private static final String KEY="Ej7SdjOBvlv2PubN";
//CBC加密偏移量
private static final String IVCODE="Ej7SdjOBvlv2PubN";
/**
* AES加密
*/
public static String encrypt(String data) {
try {
Security.addProvider(new BouncyCastleProvider());
SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), KEY_ALGORITHM);
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM, "BC");
IvParameterSpec iv = new IvParameterSpec(IVCODE.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec,iv);
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* AES解密
*/
public static String decrypt(String encryptedData) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), KEY_ALGORITHM);
IvParameterSpec iv = new IvParameterSpec(IVCODE.getBytes());
Security.addProvider(new BouncyCastleProvider());
byte[] encryptedBytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(encryptedData);
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM, "BC");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, iv);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// 驗證
public static void main(String[] args) throws Exception {
String data = "張三";
String encryptedData = encrypt(data); // 加密數(shù)據(jù)
String decryptedData = decrypt(encryptedData); // 解密數(shù)據(jù)
System.out.println("加密后的數(shù)據(jù): " + encryptedData);
System.out.println("解密后的數(shù)據(jù): " + decryptedData);
}
}總結(jié)
到此這篇關(guān)于crypto-js對稱加密解密使用方式(vue與java端)的文章就介紹到這了,更多相關(guān)crypto-js對稱加密解密使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3?+?element-plus?的?upload?+?axios?+?django?實現(xiàn)文件上
這篇文章主要介紹了vue3?+?element-plus?的?upload?+?axios?+?django?文件上傳并保存,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
Vue框架+Element-ui(el-upload組件)使用http-request方法上傳文件并顯示文件上傳進度功能
這篇文章主要介紹了Vue框架+Element-ui(el-upload組件)使用http-request方法上傳文件并顯示文件上傳進度功能,本通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08
vue 1.0 結(jié)合animate.css定義動畫效果
本文分步驟給大家介紹了Vue 1.0自定義動畫效果,vue1.0代碼結(jié)合animate.css定義動畫,頁面一定要引入animate.cdd,具體實例代碼大家參考下本文2018-07-07
通過Vue實現(xiàn)Excel文件的上傳和預(yù)覽功能
在業(yè)務(wù)系統(tǒng)中,Excel 文件作為一種常用的數(shù)據(jù)存儲和傳輸格式,經(jīng)常需要被處理和展示,這篇文章將講解如何通過 Vue 和 xlsx.js 實現(xiàn) Excel 文件的上傳和預(yù)覽功能,需要的朋友可以參考下2025-04-04
Vue中Table組件行內(nèi)右鍵菜單實現(xiàn)方法(基于 vue + AntDesign)
這篇文章主要介紹了Vue中Table組件行內(nèi)右鍵菜單實現(xiàn)方法,該項目是基于 vue + AntDesign的,具體實例代碼給大家介紹的非常詳細(xì) ,需要的朋友可以參考下2019-11-11
vue清除瀏覽器全部cookie的問題及解決方法(絕對有效!)
最近項目要實現(xiàn)關(guān)閉瀏覽器清除用戶緩存的功能,下面這篇文章主要給大家介紹了關(guān)于vue清除瀏覽器全部cookie的問題及解決方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06

