通过添加系统属性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
* 【core 】 修复CollUtil.containsAll在coll2长度大于coll1时逻辑歧义问题issue#I8Z2Q4@Gitee
* 【poi 】 修复当sheetName 不存在时ExcelUtil.getReader方法不会释放文件问题issue#I8ZIQC@Gitee
* 【crypto】 通过添加系统属性hutool.crypto.decodeHex强制关闭hex识别以解决hex和Base64歧义问题issue#I90M9D@Gitee
-------------------------------------------------------------------------------------------------------------
# 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.io.FileUtil;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.*;
import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.asymmetric.Sign;
@ -56,6 +53,9 @@ import java.util.Map;
*/
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
*/
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);
}
/**