通过添加系统属性hutool.crypto.decodeHex强制关闭hex识别以解决hex和Base64歧义问题

This commit is contained in:
Looly 2024-02-10 08:37:13 +08:00
parent 44580782f1
commit 163f1efd43
2 changed files with 9 additions and 5 deletions

View File

@ -16,6 +16,7 @@
* 【http 】 修复HtmlUtil.removeHtmlAttr处理空格问题issue#I8YV0K@Gitee * 【http 】 修复HtmlUtil.removeHtmlAttr处理空格问题issue#I8YV0K@Gitee
* 【core 】 修复CollUtil.containsAll在coll2长度大于coll1时逻辑歧义问题issue#I8Z2Q4@Gitee * 【core 】 修复CollUtil.containsAll在coll2长度大于coll1时逻辑歧义问题issue#I8Z2Q4@Gitee
* 【poi 】 修复当sheetName 不存在时ExcelUtil.getReader方法不会释放文件问题issue#I8ZIQC@Gitee * 【poi 】 修复当sheetName 不存在时ExcelUtil.getReader方法不会释放文件问题issue#I8ZIQC@Gitee
* 【crypto】 通过添加系统属性hutool.crypto.decodeHex强制关闭hex识别以解决hex和Base64歧义问题issue#I90M9D@Gitee
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.25(2024-01-11) # 5.8.25(2024-01-11)

View File

@ -3,10 +3,7 @@ package cn.hutool.crypto;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Validator; import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.*;
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm; import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm;
import cn.hutool.crypto.asymmetric.RSA; import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.asymmetric.Sign; import cn.hutool.crypto.asymmetric.Sign;
@ -56,6 +53,9 @@ import java.util.Map;
*/ */
public class SecureUtil { public class SecureUtil {
/** Hutool自定义系统属性是否解码Hex字符 issue#I90M9D */
public static String HUTOOL_CRYPTO_DECODE_HEX = "hutool.crypto.decodeHex";
/** /**
* 默认密钥字节数 * 默认密钥字节数
* *
@ -1014,7 +1014,10 @@ public class SecureUtil {
* @since 4.3.3 * @since 4.3.3
*/ */
public static byte[] decode(String key) { public static byte[] decode(String key) {
return Validator.isHex(key) ? HexUtil.decodeHex(key) : Base64.decode(key); // issue#I90M9D
// 某些特殊字符串会无法区分Hex还是Base64此处使用系统属性强制关闭Hex解析
final boolean decodeHex = SystemPropsUtil.getBoolean(HUTOOL_CRYPTO_DECODE_HEX, true);
return (decodeHex && Validator.isHex(key)) ? HexUtil.decodeHex(key) : Base64.decode(key);
} }
/** /**