Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: issue#1940 对list和array属性字段加密
  • Loading branch information
曾浩 committed Jan 8, 2021
commit 4d0a8bb022469d333ace5b788cf424c60fac4f40
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import java.util.Base64;
import java.util.Collection;
import java.util.List;

/**
* 微信支付敏感信息加密
Expand All @@ -29,12 +31,26 @@ public class RsaCryptoUtil {

public static void encryptFields(Object encryptObject, X509Certificate certificate) throws WxPayException {
try {
encryptField(encryptObject, certificate);
encryptObject(encryptObject, certificate);
} catch (Exception e) {
throw new WxPayException("敏感信息加密失败", e);
}
}

private static void encryptObject(Object encryptObject, X509Certificate certificate) throws IllegalAccessException, IllegalBlockSizeException {
if(encryptObject instanceof Collection) {
for (Object object : (Collection) encryptObject) {
encryptField(object, certificate);
}
} else if (encryptObject.getClass().isArray()) {
for (Object object : (Object[]) encryptObject) {
encryptField(object, certificate);
}
} else {
encryptField(encryptObject, certificate);
}
}

private static void encryptField(Object encryptObject, X509Certificate certificate) throws IllegalAccessException, IllegalBlockSizeException {
Class<?> infoClass = encryptObject.getClass();
Field[] infoFieldArray = infoClass.getDeclaredFields();
Expand All @@ -54,7 +70,7 @@ private static void encryptField(Object encryptObject, X509Certificate certifica
field.setAccessible(true);
Object obj = field.get(encryptObject);
if (obj != null) {
encryptField(field.get(encryptObject), certificate);
encryptObject(field.get(encryptObject), certificate);
}
}
}
Expand Down