電腦網(wǎng)站搜索如何做西地那非能提高硬度嗎
CBC模式(通過偏移值進(jìn)行加密,更具安全性)
一、VUE:
1、安裝
npm install crypto-js
?2、編寫公用js(在common文件夾下創(chuàng)建一個(gè)crypto.js)
注意:key最少要有16個(gè)字符,iv最少6個(gè)字符,否則解密返回結(jié)果為空。
import CryptoJS from 'crypto-js'const KEY = CryptoJS.enc.Utf8.parse('0123456789123456')
const IV = CryptoJS.enc.Utf8.parse('0123456789123456')// 加密函數(shù)
export function encryptData(data) {const encrypted = CryptoJS.AES.encrypt(data,KEY,{iv: IV,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7})return encrypted.toString()
}// 解密函數(shù)
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() {// 調(diào)用方法const password = encryptData('123456777')console.log(password, "加密");console.log(decryptData(password),'解密')},methods: {},
};
</script>
二、Java:
1、導(dǎo)入
<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.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值可以隨機(jī)生成*/private static String KEY = "0123456789123456";private static String IV = "0123456789123456";/**** 加密* @param data 要加密的數(shù)據(jù)* @return encrypt*/public static String encrypt(String data){return encrypt(data, KEY, IV);}/**** param data 需要解密的數(shù)據(jù)* 調(diào)用desEncrypt()方法*/public static String desEncrypt(String data){return desEncrypt(data, KEY, IV);}/*** 加密方法* @param data 要加密的數(shù)據(jù)* @param key 加密key* @param iv 加密iv* @return 加密的結(jié)果*/private static String encrypt(String data, String key, String iv){try {//"算法/模式/補(bǔ)碼方式"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 要解密的數(shù)據(jù)* @param key 解密key* @param iv 解密iv* @return 解密的結(jié)果*/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;}}
}