亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

crypto-js對(duì)稱加密解密的使用方式詳解(vue與java端)

 更新時(shí)間:2025年01月08日 11:17:28   作者:八月林城  
這篇文章主要介紹了如何在Vue前端和Java后端使用crypto-js庫進(jìn)行AES加密和解密,前端通過創(chuàng)建AES.js文件來實(shí)現(xiàn)加密解密功能,并在Vue文件或JavaScript中使用,后端則可以直接使用Java代碼進(jìn)行AES加密和解密操作,需要的朋友可以參考下

一、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實(shí)現(xiàn)用v-bind給src和href賦值

    vue實(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í)例詳解

    這篇文章主要為大家介紹了為Vue3?組件標(biāo)注?TS?類型實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Vue3響應(yīng)式方案及ref?reactive的區(qū)別詳解

    Vue3響應(yīng)式方案及ref?reactive的區(qū)別詳解

    眾所周知ref和reactive都是用來作響應(yīng)式數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Vue3響應(yīng)式方案及ref?reactive區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Vue.js中v-on指令的用法介紹

    Vue.js中v-on指令的用法介紹

    這篇文章介紹了Vue.js中v-on指令的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 最新評(píng)論