From 6e193859f778ca09daf3bc8ac1d6ebdfc3c57290 Mon Sep 17 00:00:00 2001 From: lbw Date: Sat, 15 Jul 2023 16:31:38 +0800 Subject: [PATCH] =?UTF-8?q?:rewind:=20Reverting=20changes.=20=E8=80=83?= =?UTF-8?q?=E8=99=91=E5=85=BC=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E8=BF=98=E6=98=AFAES=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/gateway/filter/PasswordDecoderFilter.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java index da3ad0805..5d567b6ed 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java +++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java @@ -18,9 +18,10 @@ package com.pig4cloud.pigx.gateway.filter; import cn.hutool.core.util.CharsetUtil; -import cn.hutool.core.util.HexUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.crypto.SmUtil; +import cn.hutool.crypto.Mode; +import cn.hutool.crypto.Padding; +import cn.hutool.crypto.symmetric.AES; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -53,6 +54,8 @@ import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; import java.nio.charset.Charset; import java.util.List; import java.util.Map; @@ -156,10 +159,15 @@ public class PasswordDecoderFilter extends AbstractGatewayFilterFactory { */ private Function decryptAES() { return s -> { + // 构建前端对应解密AES 因子 + AES aes = new AES(Mode.CFB, Padding.NoPadding, + new SecretKeySpec(gatewayConfig.getEncodeKey().getBytes(), KEY_ALGORITHM), + new IvParameterSpec(gatewayConfig.getEncodeKey().getBytes())); + // 获取请求密码并解密 Map inParamsMap = HttpUtil.decodeParamMap((String) s, CharsetUtil.CHARSET_UTF_8); if (inParamsMap.containsKey(PASSWORD)) { - String password = SmUtil.sm4(HexUtil.decodeHex(gatewayConfig.getEncodeKey())).decryptStr(inParamsMap.get(PASSWORD)); + String password = aes.decryptStr(inParamsMap.get(PASSWORD)); // 返回修改后报文字符 inParamsMap.put(PASSWORD, password); }