From 0f24b22a325ffa2bb51f74f967f6625db9f532a7 Mon Sep 17 00:00:00 2001 From: "menjoe.zhou@islide.cc" Date: Wed, 14 Apr 2021 18:34:58 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=8E=92=E9=99=A41.8=E7=89=B9=E6=80=A7=20?= =?UTF-8?q?2.=20=E6=9B=BF=E6=8D=A2base64=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/egzosn/pay/baidu/api/BaiduPayService.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java index e234257..8275398 100644 --- a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java +++ b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java @@ -5,9 +5,9 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.security.*; import java.security.spec.InvalidKeySpecException; -import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.*; +import com.egzosn.pay.common.util.sign.encrypt.Base64; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -98,7 +98,7 @@ public class BaiduPayService extends BasePayService { Signature signature = Signature.getInstance(SIGN_ALGORITHMS); signature.initVerify(this.getPublicKeyX509(publicKey)); signature.update(content.getBytes(CHARSET)); - boolean verify = signature.verify(Base64.getDecoder().decode(rsaSign.getBytes(CHARSET))); + boolean verify = signature.verify(Base64.decode(rsaSign)); LOG.info("使用公钥进行验签: " + verify); return verify; } catch (Exception e) { @@ -119,12 +119,12 @@ public class BaiduPayService extends BasePayService { * @throws NoSuchAlgorithmException */ private static PublicKey getPublicKeyX509(String publicKey) throws InvalidKeySpecException, - NoSuchAlgorithmException, UnsupportedEncodingException { + NoSuchAlgorithmException { if (StringUtils.isEmpty(publicKey)) { return null; } KeyFactory keyFactory = KeyFactory.getInstance(SIGN_TYPE_RSA); - byte[] decodedKey = Base64.getDecoder().decode(publicKey.getBytes(CHARSET)); + byte[] decodedKey = Base64.decode(publicKey); return keyFactory.generatePublic(new X509EncodedKeySpec(decodedKey)); } @@ -138,7 +138,12 @@ public class BaiduPayService extends BasePayService { * @throws UnsupportedEncodingException */ private String signContent(Map params) throws UnsupportedEncodingException { - Map sortedParams = new TreeMap<>(Comparator.naturalOrder()); + Map sortedParams = new TreeMap<>(new Comparator() { + @Override + public int compare(String o1, String o2) { + return o1.compareTo(o2); + } + }); for (Map.Entry entry : params.entrySet()) { String key = entry.getKey(); if (legalKey(key)) {