crypto-js對(duì)稱加密解密的使用方式詳解(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ù)隨機(jī)碼 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; } } // 驗(yàn)證 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對(duì)稱加密解密使用方式(vue與java端)的文章就介紹到這了,更多相關(guān)crypto-js對(duì)稱加密解密使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目中data數(shù)據(jù)之間互相訪問(wèn)的實(shí)現(xiàn)
本文主要介紹了vue項(xiàng)目中data數(shù)據(jù)之間互相訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05React?Diff算法不采用Vue的雙端對(duì)比原因詳解
這篇文章主要介紹了React?Diff算法不采用Vue雙端對(duì)比算法原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Vue前端項(xiàng)目部署IIS的實(shí)現(xiàn)
這篇文章主要介紹了Vue前端項(xiàng)目部署IIS的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Vue中CSS動(dòng)畫(huà)原理的實(shí)現(xiàn)
這篇文章主要介紹了Vue中CSS動(dòng)畫(huà)原理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02vue實(shí)現(xiàn)用v-bind給src和href賦值
這篇文章主要介紹了vue實(shí)現(xiàn)用v-bind給src和href賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04為Vue3?組件標(biāo)注?TS?類型實(shí)例詳解
這篇文章主要為大家介紹了為Vue3?組件標(biāo)注?TS?類型實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Vue3響應(yīng)式方案及ref?reactive的區(qū)別詳解
眾所周知ref和reactive都是用來(lái)作響應(yīng)式數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Vue3響應(yīng)式方案及ref?reactive區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12