Skip to content

Commit 15a33a7

Browse files
committed
重构RSA加密方法
1 parent 5dcd06b commit 15a33a7

File tree

2 files changed

+10
-14
lines changed

2 files changed

+10
-14
lines changed

weixin-java-pay/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
</dependency>
4242
<dependency>
4343
<groupId>org.bouncycastle</groupId>
44-
<artifactId>bcprov-jdk16</artifactId>
45-
<version>1.46</version>
44+
<artifactId>bcpkix-jdk15on</artifactId>
45+
<version>1.59</version>
4646
</dependency>
4747

4848
<dependency>

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,18 @@
88
import com.github.binarywang.wxpay.service.WxPayService;
99
import com.github.binarywang.wxpay.util.SignUtils;
1010
import org.apache.commons.codec.binary.Base64;
11+
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
1112
import org.bouncycastle.jce.provider.BouncyCastleProvider;
12-
import org.bouncycastle.jce.provider.JCERSAPublicKey;
13-
import org.bouncycastle.openssl.PEMReader;
14-
import org.bouncycastle.openssl.PasswordFinder;
13+
import org.bouncycastle.openssl.PEMParser;
14+
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
1515

1616
import javax.crypto.Cipher;
1717
import java.io.File;
1818
import java.io.FileReader;
1919
import java.io.IOException;
2020
import java.nio.file.Files;
2121
import java.nio.file.Path;
22+
import java.security.PublicKey;
2223
import java.security.Security;
2324

2425
/**
@@ -107,15 +108,10 @@ private String encryptRSA(File publicKeyFile, String srcString) throws WxPayExce
107108
try {
108109
Security.addProvider(new BouncyCastleProvider());
109110
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding");
110-
PasswordFinder passwordFinder = new PasswordFinder() {
111-
@Override
112-
public char[] getPassword() {
113-
return "".toCharArray();
114-
}
115-
};
116-
117-
try (PEMReader reader = new PEMReader(new FileReader(publicKeyFile), passwordFinder)) {
118-
JCERSAPublicKey publicKey = (JCERSAPublicKey) reader.readObject();
111+
try (PEMParser reader = new PEMParser(new FileReader(publicKeyFile))) {
112+
final PublicKey publicKey = new JcaPEMKeyConverter().setProvider("BC")
113+
.getPublicKey((SubjectPublicKeyInfo) reader.readObject());
114+
119115
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
120116
byte[] encrypt = cipher.doFinal(srcString.getBytes());
121117
return Base64.encodeBase64String(encrypt);

0 commit comments

Comments
 (0)