From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 01 十一月 2024 15:11:19 +0800 Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成" --- Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/DesUtil.java | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 208 insertions(+), 0 deletions(-) diff --git a/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/DesUtil.java b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/DesUtil.java new file mode 100644 index 0000000..b5eb28c --- /dev/null +++ b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/DesUtil.java @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2018-2028, DreamLu All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: DreamLu 鍗㈡槬姊� (596392912@qq.com) + */ +package org.springblade.core.tool.utils; + +import org.springframework.lang.Nullable; + +import javax.crypto.Cipher; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.DESKeySpec; +import java.util.Objects; + +/** + * DES鍔犺В瀵嗗鐞嗗伐鍏� + * + * @author L.cm + */ +public class DesUtil { + /** + * 鏁板瓧绛惧悕锛屽瘑閽ョ畻娉� + */ + public static final String DES_ALGORITHM = "DES"; + + /** + * 鐢熸垚 des 瀵嗛挜 + * + * @return 瀵嗛挜 + */ + public static String genDesKey() { + return StringUtil.random(16); + } + + /** + * DES鍔犲瘑 + * + * @param data byte array + * @param password 瀵嗛挜 + * @return des hex + */ + public static String encryptToHex(byte[] data, String password) { + return HexUtil.encodeToString(encrypt(data, password)); + } + + /** + * DES鍔犲瘑 + * + * @param data 瀛楃涓插唴瀹� + * @param password 瀵嗛挜 + * @return des hex + */ + @Nullable + public static String encryptToHex(@Nullable String data, String password) { + if (StringUtil.isBlank(data)) { + return null; + } + byte[] dataBytes = data.getBytes(Charsets.UTF_8); + return encryptToHex(dataBytes, password); + } + + /** + * DES瑙e瘑 + * + * @param data 瀛楃涓插唴瀹� + * @param password 瀵嗛挜 + * @return des context + */ + @Nullable + public static String decryptFormHex(@Nullable String data, String password) { + if (StringUtil.isBlank(data)) { + return null; + } + byte[] hexBytes = HexUtil.decode(data); + return new String(decrypt(hexBytes, password), Charsets.UTF_8); + } + + /** + * DES鍔犲瘑 + * + * @param data byte array + * @param password 瀵嗛挜 + * @return des hex + */ + public static String encryptToBase64(byte[] data, String password) { + return Base64Util.encodeToString(encrypt(data, password)); + } + + /** + * DES鍔犲瘑 + * + * @param data 瀛楃涓插唴瀹� + * @param password 瀵嗛挜 + * @return des hex + */ + @Nullable + public static String encryptToBase64(@Nullable String data, String password) { + if (StringUtil.isBlank(data)) { + return null; + } + byte[] dataBytes = data.getBytes(Charsets.UTF_8); + return encryptToBase64(dataBytes, password); + } + + /** + * DES瑙e瘑 + * + * @param data 瀛楃涓插唴瀹� + * @param password 瀵嗛挜 + * @return des context + */ + public static byte[] decryptFormBase64(byte[] data, String password) { + byte[] dataBytes = Base64Util.decode(data); + return decrypt(dataBytes, password); + } + + /** + * DES瑙e瘑 + * + * @param data 瀛楃涓插唴瀹� + * @param password 瀵嗛挜 + * @return des context + */ + @Nullable + public static String decryptFormBase64(@Nullable String data, String password) { + if (StringUtil.isBlank(data)) { + return null; + } + byte[] dataBytes = Base64Util.decodeFromString(data); + return new String(decrypt(dataBytes, password), Charsets.UTF_8); + } + + /** + * DES鍔犲瘑 + * + * @param data 鍐呭 + * @param desKey 瀵嗛挜 + * @return byte array + */ + public static byte[] encrypt(byte[] data, byte[] desKey) { + return des(data, desKey, Cipher.ENCRYPT_MODE); + } + + /** + * DES鍔犲瘑 + * + * @param data 鍐呭 + * @param desKey 瀵嗛挜 + * @return byte array + */ + public static byte[] encrypt(byte[] data, String desKey) { + return encrypt(data, Objects.requireNonNull(desKey).getBytes(Charsets.UTF_8)); + } + + /** + * DES瑙e瘑 + * + * @param data 鍐呭 + * @param desKey 瀵嗛挜 + * @return byte array + */ + public static byte[] decrypt(byte[] data, byte[] desKey) { + return des(data, desKey, Cipher.DECRYPT_MODE); + } + + /** + * DES瑙e瘑 + * + * @param data 鍐呭 + * @param desKey 瀵嗛挜 + * @return byte array + */ + public static byte[] decrypt(byte[] data, String desKey) { + return decrypt(data, Objects.requireNonNull(desKey).getBytes(Charsets.UTF_8)); + } + + /** + * DES鍔犲瘑/瑙e瘑鍏叡鏂规硶 + * + * @param data byte鏁扮粍 + * @param desKey 瀵嗛挜 + * @param mode 鍔犲瘑锛歿@link Cipher#ENCRYPT_MODE}锛岃В瀵嗭細{@link Cipher#DECRYPT_MODE} + * @return des + */ + private static byte[] des(byte[] data, byte[] desKey, int mode) { + try { + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES_ALGORITHM); + Cipher cipher = Cipher.getInstance(DES_ALGORITHM); + DESKeySpec desKeySpec = new DESKeySpec(desKey); + cipher.init(mode, keyFactory.generateSecret(desKeySpec), Holder.SECURE_RANDOM); + return cipher.doFinal(data); + } catch (Exception e) { + throw Exceptions.unchecked(e); + } + } + +} -- Gitblit v1.9.3