Browse Source

重构RSA加密方法

master
Binary Wang 7 years ago
parent
commit
15a33a7d46
2 changed files with 10 additions and 14 deletions
  1. +2
    -2
      weixin-java-pay/pom.xml
  2. +8
    -12
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java

+ 2
- 2
weixin-java-pay/pom.xml View File

@@ -41,8 +41,8 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.bouncycastle</groupId> <groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.59</version>
</dependency> </dependency>


<dependency> <dependency>


+ 8
- 12
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java View File

@@ -8,10 +8,10 @@ import com.github.binarywang.wxpay.service.EntPayService;
import com.github.binarywang.wxpay.service.WxPayService; import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.util.SignUtils; import com.github.binarywang.wxpay.util.SignUtils;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.provider.JCERSAPublicKey;
import org.bouncycastle.openssl.PEMReader;
import org.bouncycastle.openssl.PasswordFinder;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;


import javax.crypto.Cipher; import javax.crypto.Cipher;
import java.io.File; import java.io.File;
@@ -19,6 +19,7 @@ import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.security.PublicKey;
import java.security.Security; import java.security.Security;


/** /**
@@ -107,15 +108,10 @@ public class EntPayServiceImpl implements EntPayService {
try { try {
Security.addProvider(new BouncyCastleProvider()); Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding"); Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding");
PasswordFinder passwordFinder = new PasswordFinder() {
@Override
public char[] getPassword() {
return "".toCharArray();
}
};

try (PEMReader reader = new PEMReader(new FileReader(publicKeyFile), passwordFinder)) {
JCERSAPublicKey publicKey = (JCERSAPublicKey) reader.readObject();
try (PEMParser reader = new PEMParser(new FileReader(publicKeyFile))) {
final PublicKey publicKey = new JcaPEMKeyConverter().setProvider("BC")
.getPublicKey((SubjectPublicKeyInfo) reader.readObject());

cipher.init(Cipher.ENCRYPT_MODE, publicKey); cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encrypt = cipher.doFinal(srcString.getBytes()); byte[] encrypt = cipher.doFinal(srcString.getBytes());
return Base64.encodeBase64String(encrypt); return Base64.encodeBase64String(encrypt);


Loading…
Cancel
Save