From 1a2d9f26678c26d4a830e112c38c3808406bbda6 Mon Sep 17 00:00:00 2001 From: Sutra Zhou Date: Mon, 30 Apr 2018 22:33:16 +0800 Subject: [PATCH] Clean up exceptions, mark initialize as synchronized. --- .../java/com/foxinmy/weixin4j/wxa/AESUtils.java | 15 +++++++-------- .../com/foxinmy/weixin4j/wxa/WXBizDataCrypt.java | 9 +-------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/AESUtils.java b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/AESUtils.java index 4b445b66..d424b587 100644 --- a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/AESUtils.java +++ b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/AESUtils.java @@ -1,9 +1,7 @@ package com.foxinmy.weixin4j.wxa; import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; import java.security.Key; -import java.security.NoSuchProviderException; import java.security.Security; import javax.crypto.Cipher; @@ -23,12 +21,11 @@ final class AESUtils { * AES解密 * * @param content 密文 + * @param keyByte key + * @param ivByte 初始向量 * @return 明文 - * @throws InvalidAlgorithmParameterException - * @throws NoSuchProviderException */ - static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) - throws InvalidAlgorithmParameterException { + static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) { initialize(); try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); @@ -42,9 +39,11 @@ final class AESUtils { } } - private static void initialize() { - if (initialized) + private static synchronized void initialize() { + if (initialized) { return; + } + Security.addProvider(new BouncyCastleProvider()); initialized = true; } diff --git a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WXBizDataCrypt.java b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WXBizDataCrypt.java index b5af9b07..effcd87a 100644 --- a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WXBizDataCrypt.java +++ b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WXBizDataCrypt.java @@ -1,7 +1,6 @@ package com.foxinmy.weixin4j.wxa; import java.nio.charset.Charset; -import java.security.InvalidAlgorithmParameterException; import org.apache.commons.codec.binary.Base64; @@ -36,13 +35,7 @@ public class WXBizDataCrypt { final byte[] aesCipher = Base64.decodeBase64(encryptedData); final byte[] aesIV = Base64.decodeBase64(iv); - final byte[] decryptedBytes; - try { - decryptedBytes = AESUtils.decrypt(aesCipher, aesKey, aesIV); - } catch (InvalidAlgorithmParameterException e) { - throw new RuntimeException(e); - } - + final byte[] decryptedBytes = AESUtils.decrypt(aesCipher, aesKey, aesIV); final String decryptedText = new String(decryptedBytes, Charset.forName("UTF-8")); final JSONObject decrypted = JSON.parseObject(decryptedText);