无锡网站建设价格,wordpress怎么只显示标题和摘要,岗顶网站设计,三亚建设网站CBC模式#xff08;通过偏移值进行加密#xff0c;更具安全性#xff09;
一、VUE#xff1a;
1、安装
npm install crypto-js 2、编写公用js#xff08;在common文件夹下创建一个crypto.js#xff09;
注意#xff1a;key最少要有16个字符#xff0c;iv最少6个字符…CBC模式通过偏移值进行加密更具安全性
一、VUE
1、安装
npm install crypto-js 2、编写公用js在common文件夹下创建一个crypto.js
注意key最少要有16个字符iv最少6个字符否则解密返回结果为空。
import CryptoJS from crypto-jsconst KEY CryptoJS.enc.Utf8.parse(0123456789123456)
const IV CryptoJS.enc.Utf8.parse(0123456789123456)// 加密函数
export function encryptData(data) {const encrypted CryptoJS.AES.encrypt(data,KEY,{iv: IV,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7})return encrypted.toString()
}// 解密函数
export function decryptData(data) {const decrypted CryptoJS.AES.decrypt(data,KEY,{iv: IV,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7})return CryptoJS.enc.Utf8.stringify(decrypted)
}export default {encryptData,decryptData
}3、引入js使用
script
// 引入js
import { encryptData, decryptData } from /common/crypto.js
export default {data() {return {},},created() {// 调用方法const password encryptData(123456777)console.log(password, 加密);console.log(decryptData(password),解密)},methods: {},
};
/script 二、Java
1、导入
dependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15on/artifactIdversion1.60/version
/dependency
2、新建工具类
package com.nview.utils.aes;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;/*** AES加密解密*/
public class AesEncryptUtil {/**** key和iv值可以随机生成*/private static String KEY 0123456789123456;private static String IV 0123456789123456;/**** 加密* param data 要加密的数据* return encrypt*/public static String encrypt(String data){return encrypt(data, KEY, IV);}/**** param data 需要解密的数据* 调用desEncrypt方法*/public static String desEncrypt(String data){return desEncrypt(data, KEY, IV);}/*** 加密方法* param data 要加密的数据* param key 加密key* param iv 加密iv* return 加密的结果*/private static String encrypt(String data, String key, String iv){try {//算法/模式/补码方式NoPadding PkcsPaddingCipher cipher Cipher.getInstance(AES/CBC/NoPadding);int 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 解密的结果*/private static String desEncrypt(String data, String key, String iv){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);return new String(original).trim();} catch (Exception e) {e.printStackTrace();return null;}}
}