AESUtil加密加将单个工具类打成jar包并引用
生活随笔
收集整理的這篇文章主要介紹了
AESUtil加密加将单个工具类打成jar包并引用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AES加密和解密,可以放在password的get,set方法中
package com.deqin.aesutil.util;import com.aliyun.odps.utils.StringUtils;
import org.apache.log4j.Logger;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;public class AESUtil {public static final Logger logger = Logger.getLogger(AESUtil.class);public static final String defaultCharset = "UTF-8";public static final String KEY_AES = "AES";/*** 加密** @param data 需要加密的內容* @param key 加密密碼* @return*/public static String encrypt(String data, String key) {return doAES(data, key, Cipher.ENCRYPT_MODE);}/*** 解密** @param data 待解密內容* @param key 解密密鑰* @return*/public static String decrypt(String data, String key) {return doAES(data, key, Cipher.DECRYPT_MODE);}/*** 加解密** @param data 待處理數據* @param key 密鑰* @param mode 加解密mode* @return*/private static String doAES(String data, String key, int mode) {try {if (StringUtils.isBlank(data) || StringUtils.isBlank(key)) {return null;}//判斷是加密還是解密boolean encrypt = mode == Cipher.ENCRYPT_MODE;byte[] content;//true 加密內容 false 解密內容if (encrypt) {content = data.getBytes(defaultCharset);} else {content = parseHexStr2Byte(data);}//1.構造密鑰生成器,指定為AES算法,不區分大小寫KeyGenerator kgen = KeyGenerator.getInstance(KEY_AES);//2.根據ecnodeRules規則初始化密鑰生成器//生成一個128位的隨機源,根據傳入的字節數組kgen.init(128, new SecureRandom(key.getBytes()));//3.產生原始對稱密鑰SecretKey secretKey = kgen.generateKey();//4.獲得原始對稱密鑰的字節數組byte[] enCodeFormat = secretKey.getEncoded();//5.根據字節數組生成AES密鑰SecretKeySpec keySpec = new SecretKeySpec(enCodeFormat, KEY_AES);//6.根據指定算法AES自成密碼器Cipher cipher = Cipher.getInstance(KEY_AES);// 創建密碼器//7.初始化密碼器,第一個參數為加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二個參數為使用的KEYcipher.init(mode, keySpec);// 初始化byte[] result = cipher.doFinal(content);if (encrypt) {//將二進制轉換成16進制return parseByte2HexStr(result);} else {return new String(result, defaultCharset);}} catch (Exception e) {logger.error("AES 密文處理異常", e);// System.out.print(“Exception”);}return null;}/*** 將二進制轉換成16進制** @param buf* @return*/public static String parseByte2HexStr(byte buf[]) {StringBuilder sb = new StringBuilder();for (int i = 0; i < buf.length; i++) {String hex = Integer.toHexString(buf[i] & 0xFF);if (hex.length() == 1) {hex = '0' + hex;}sb.append(hex.toUpperCase());}return sb.toString();}/*** 將16進制轉換為二進制** @param hexStr* @return*/public static byte[] parseHexStr2Byte(String hexStr) {if (hexStr.length() < 1) {return null;}byte[] result = new byte[hexStr.length() / 2];for (int i = 0; i < hexStr.length() / 2; i++) {int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);result[i] = (byte) (high * 16 + low);}return result;}public static void main(String[] args) {}}
使用idea實現自己的工具類打包成jar包(工具類中有引用三方jar)(非可運行jar,屬工具類jar)
https://www.cnblogs.com/007sx/p/12442991.html
若要引用第三方jar包,可以如下:
不過僅僅引入,springboot項目通過本地引入第三方jar包時,第三方jar包無法打包進項目,可參考下方資料
https://www.cnblogs.com/lwyang/p/12554097.html
總結
以上是生活随笔為你收集整理的AESUtil加密加将单个工具类打成jar包并引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用rfcomm实现树莓派与手机通信_工
- 下一篇: python编程第四版_清华编程教授强力