From e6ab9c2b7af85ac676ef9fbe616327eb20f04139 Mon Sep 17 00:00:00 2001
From: 16639036659 <577530412@qq.com>
Date: 星期一, 11 十二月 2023 10:01:18 +0800
Subject: [PATCH] 暂时提交

---
 src/main/java/com/ruoyi/doublePrevention/utilsCJ/AesGcm256Util.java |  288 +++++++++++++++++++++++++++-----------------------------
 1 files changed, 139 insertions(+), 149 deletions(-)

diff --git a/src/main/java/com/ruoyi/doublePrevention/utilsCJ/AesGcm256Util.java b/src/main/java/com/ruoyi/doublePrevention/utilsCJ/AesGcm256Util.java
index b024ea0..0eeb98b 100644
--- a/src/main/java/com/ruoyi/doublePrevention/utilsCJ/AesGcm256Util.java
+++ b/src/main/java/com/ruoyi/doublePrevention/utilsCJ/AesGcm256Util.java
@@ -1,149 +1,139 @@
-package com.ruoyi.doublePrevention.utilsCJ;//package com.gkhy.safePlatform.doublePrevention.utilsCJ;
-//
-//import com.f2bpm.upload.interfaces.ConstantUpload;
-//import org.bouncycastle.crypto.DataLengthException;
-//import org.bouncycastle.crypto.InvalidCipherTextException;
-//import org.bouncycastle.crypto.engines.AESFastEngine;
-//import org.bouncycastle.crypto.modes.GCMBlockCipher;
-//import org.bouncycastle.crypto.params.AEADParameters;
-//import org.bouncycastle.crypto.params.KeyParameter;
-//
-//import java.io.UnsupportedEncodingException;
-//import java.nio.charset.StandardCharsets;
-//import java.security.SecureRandom;
-//import java.util.Base64;
-//
-///**
-// * AES-GCM-256 工具类
-// *
-// * @author :LX(长沙麓谷)
-// * @date 创建时间: 2022/8/3 14:05
-// */
-//public class AesGcm256Util {
-//
-//    /**
-//     * 随机数生成
-//     */
-//    private static final SecureRandom SECURE_RANDOM = new SecureRandom();
-//
-//    public static final int NONCE_BIT_SIZE = 128;
-//    public static final int MAC_BIT_SIZE = 128;
-//    public static final int KEY_BIT_SIZE = 256;
-//
-//
-//    private AesGcm256Util(){}
-//
-//
-//    /**
-//     * 创建密钥
-//     * @return 密钥
-//     */
-//    public static byte[] key() {
-//        byte[] key = new byte[KEY_BIT_SIZE / 8];
-//        SECURE_RANDOM.nextBytes(key);
-//        return key;
-//    }
-//
-//    /**
-//     * 创建向量
-//     * @return 向量
-//     */
-//    public static byte[] iv() {
-//        byte[] iv = new byte[NONCE_BIT_SIZE / 8];
-//        SECURE_RANDOM.nextBytes(iv);
-//        return iv;
-//    }
-//
-//    /**
-//     * 编码
-//     * @param hexStr 要编码的文本
-//     * @return 字节数组
-//     */
-//    public static byte[] hexToByte(String hexStr) {
-//        int len = hexStr.length();
-//        byte[] data = new byte[len / 2];
-//        for (int i = 0; i < len; i += 2) {
-//            data[i / 2] = (byte) ((Character.digit(hexStr.charAt(i), 16) << 4)
-//                    + Character.digit(hexStr.charAt(i + 1), 16));
-//        }
-//        return data;
-//    }
-//
-//    /**
-//     * 转换为十六进制
-//     * @param data 字节数组
-//     * @return 转换的十六进制数据
-//     */
-//    public static String toHex(byte[] data) {
-//        StringBuilder ret = new StringBuilder();
-//        for (byte datum : data) {
-//            String hex = Integer.toHexString(datum & 0xFF);
-//            if (hex.length() == 1) {
-//                hex = '0' + hex;
-//            }
-//            ret.append(hex.toUpperCase());
-//        }
-//        return ret.toString();
-//    }
-//
-//    /**
-//     * 加密
-//     * @param plainText 要加密的明文文本
-//     * @param key 密钥
-//     * @param iv 向量
-//     * @return
-//     */
-//    public static String encrypt(String plainText, String key, String iv) throws UnsupportedEncodingException {
-//        return encrypt(plainText, key.getBytes(ConstantUpload.Base.UTF-8), iv.getBytes(ConstantUpload.Base.UTF-8));
-//    }
-//
-//    /**
-//     * 加密
-//     * @param plainText 要加密的明文文本
-//     * @param key 密钥
-//     * @param iv 向量
-//     * @return
-//     */
-//    public static String encrypt(String plainText, byte[] key, byte[] iv) {
-//        String sr;
-//        try {
-//            byte[] plainBytes = plainText.getBytes(StandardCharsets.UTF_8);
-//            GCMBlockCipher cipher = new GCMBlockCipher(new AESFastEngine());
-//            AEADParameters parameters = new AEADParameters(new KeyParameter(key), MAC_BIT_SIZE, iv, null);
-//            cipher.init(true, parameters);
-//            byte[] encryptedBytes = new byte[cipher.getOutputSize(plainBytes.length)];
-//            int retLen = cipher.processBytes(plainBytes, 0, plainBytes.length, encryptedBytes, 0);
-//            cipher.doFinal(encryptedBytes, retLen);
-//            sr = Base64.getEncoder().encodeToString(encryptedBytes);
-//        } catch (Exception ex) {
-//            throw new RuntimeException("加密异常! Encryption exception:" + ex.getMessage());
-//        }
-//        return sr;
-//    }
-//
-//    /**
-//     * 解密
-//     * @param encryptedText 已加密文本
-//     * @param key 密钥
-//     * @param iv 向量
-//     * @return
-//     */
-//    public static String decrypt(String encryptedText, byte[] key, byte[] iv) {
-//        String sr;
-//        try {
-//            byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
-//            GCMBlockCipher cipher = new GCMBlockCipher(new AESFastEngine());
-//            AEADParameters parameters = new AEADParameters(new KeyParameter(key), MAC_BIT_SIZE, iv, null);
-//            cipher.init(false, parameters);
-//            byte[] plainBytes = new byte[cipher.getOutputSize(encryptedBytes.length)];
-//            int retLen = cipher.processBytes(encryptedBytes, 0, encryptedBytes.length, plainBytes, 0);
-//            cipher.doFinal(plainBytes, retLen);
-//            sr = new String(plainBytes, StandardCharsets.UTF_8);
-//
-//        } catch (IllegalArgumentException | IllegalStateException | DataLengthException | InvalidCipherTextException ex) {
-//            throw new RuntimeException("解密异常! Decryption exception:" + ex.getMessage());
-//        }
-//        return sr;
-//    }
-//}
-//
+package com.ruoyi.doublePrevention.utilsCJ;
+
+import org.bouncycastle.crypto.DataLengthException;
+import org.bouncycastle.crypto.InvalidCipherTextException;
+import org.bouncycastle.crypto.engines.AESFastEngine;
+import org.bouncycastle.crypto.modes.GCMBlockCipher;
+import org.bouncycastle.crypto.params.AEADParameters;
+import org.bouncycastle.crypto.params.KeyParameter;
+
+import java.nio.charset.StandardCharsets;
+import java.security.SecureRandom;
+import java.util.Base64;
+
+/**
+* AES-GCM-256 工具类
+* 加解密方法中已调用 Base64 方法
+*/
+public class AesGcm256Util {
+ private static final SecureRandom SECURE_RANDOM = new
+SecureRandom();
+ public static final int NONCE_BIT_SIZE = 128;
+ public static final int MAC_BIT_SIZE = 128;
+ public static final int KEY_BIT_SIZE = 256;
+ private AesGcm256Util() {
+ }
+ /**
+ * 创建密钥
+ *
+ * @return 密钥
+ */
+ public static byte[] key() {
+ byte[] key = new byte[KEY_BIT_SIZE / 8];
+ SECURE_RANDOM.nextBytes(key);
+ return key;
+ }
+ /**
+ * 创建向量
+ *
+ * @return 向量
+ */
+//双重预防机制接口技术文档
+ public static byte[] iv() {
+ byte[] iv = new byte[NONCE_BIT_SIZE / 8];
+ SECURE_RANDOM.nextBytes(iv);
+ return iv;
+ }
+ /**
+ * 编码
+ *
+ * @param hexStr 文本
+ * @return 字节数组
+ */
+ public static byte[] hexToByte(String hexStr) {
+ int len = hexStr.length();
+ byte[] data = new byte[len / 2];
+ for (int i = 0; i < len; i += 2) {
+ data[i / 2] = (byte) ((Character.digit(hexStr.charAt(i), 16) << 4)
+ + Character.digit(hexStr.charAt(i + 1), 16));
+ }
+ return data;
+ }
+ /**
+ * 转为十六进制
+ *
+ * @param data 字节数组
+ * @return 转换结果
+ */
+ public static String toHex(byte[] data) {
+ StringBuilder ret = new StringBuilder();
+ for (byte datum : data) {
+ String hex = Integer.toHexString(datum & 0xFF);
+ if (hex.length() == 1) {
+ hex = '0' + hex;
+ }
+ ret.append(hex.toUpperCase());
+ }
+ return ret.toString();
+ }
+ /**
+ * 加密
+ * @param plainText 明文文本
+双重预防机制接口技术文档
+ * @param key 密钥
+ * @param iv 向量
+ * @return 加密字符串
+ */
+ public static String encrypt(String plainText, byte[] key, byte[] iv) {
+ String sr;
+ try {
+ byte[] plainBytes = plainText.getBytes(StandardCharsets.UTF_8);
+ GCMBlockCipher cipher = new GCMBlockCipher(new
+         AESFastEngine());
+ AEADParameters parameters =
+ new AEADParameters(new KeyParameter(key),
+MAC_BIT_SIZE, iv, null);
+ cipher.init(true, parameters);
+ byte[] encryptedBytes = new
+byte[cipher.getOutputSize(plainBytes.length)];
+ int retLen = cipher.processBytes(plainBytes, 0, plainBytes.length,
+encryptedBytes, 0);
+ cipher.doFinal(encryptedBytes, retLen);
+ sr = Base64.getEncoder().encodeToString(encryptedBytes);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex.getMessage());
+ }
+ return sr;
+ }
+ /**
+ * 解密
+ *
+ * @param encryptedText 已加密文本
+ * @param key 密钥
+ * @param iv 向量
+ * @return 已解密文本
+ */
+ public static String decrypt(String encryptedText, byte[] key, byte[] iv) {
+ String sr;
+ try {
+ byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
+ GCMBlockCipher cipher = new GCMBlockCipher(new
+         AESFastEngine());
+//双重预防机制接口技术文档
+ AEADParameters parameters =
+ new AEADParameters(new KeyParameter(key),
+MAC_BIT_SIZE, iv, null);
+ cipher.init(false, parameters);
+ byte[] plainBytes = new
+byte[cipher.getOutputSize(encryptedBytes.length)];
+ int retLen = cipher.processBytes
+ (encryptedBytes, 0, encryptedBytes.length, plainBytes, 0);
+ cipher.doFinal(plainBytes, retLen);
+ sr = new String(plainBytes, StandardCharsets.UTF_8);
+ } catch (IllegalArgumentException | IllegalStateException |
+         DataLengthException | InvalidCipherTextException ex) {
+ throw new RuntimeException(ex.getMessage());
+ }
+ return sr;
+ }
+}

--
Gitblit v1.9.2