package com.hongqiang.shop.common.utils; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.Provider; import java.security.PublicKey; import java.security.SecureRandom; import javax.crypto.Cipher; import org.apache.commons.codec.binary.Base64; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.springframework.util.Assert; public final class RSAUtils { private static final Provider provider = new BouncyCastleProvider(); private static final int VALUE = 1024; public static KeyPair generateKeyPair() { try { KeyPairGenerator localKeyPairGenerator = KeyPairGenerator.getInstance("RSA", provider); localKeyPairGenerator.initialize(VALUE, new SecureRandom()); return localKeyPairGenerator.generateKeyPair(); } catch (NoSuchAlgorithmException localNoSuchAlgorithmException) { localNoSuchAlgorithmException.printStackTrace(); } return null; } public static byte[] encrypt(PublicKey publicKey, byte[] data) { Assert.notNull(publicKey); Assert.notNull(data); try { Cipher localCipher = Cipher.getInstance("RSA", provider); localCipher.init(1, publicKey); return localCipher.doFinal(data); } catch (Exception localException1) { localException1.printStackTrace(); } return null; } public static String encrypt(PublicKey publicKey, String text) { Assert.notNull(publicKey); Assert.notNull(text); byte[] arrayOfByte = encrypt(publicKey, text.getBytes()); return arrayOfByte != null ? Base64.encodeBase64String(arrayOfByte) : null; } public static byte[] decrypt(PrivateKey privateKey, byte[] data) { Assert.notNull(privateKey); Assert.notNull(data); try { Cipher localCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", provider); localCipher.init(2, privateKey); return localCipher.doFinal(data); } catch (Exception localException1) { } return null; } public static String decrypt(PrivateKey privateKey, String text) { Assert.notNull(privateKey); Assert.notNull(text); byte[] arrayOfByte = decrypt(privateKey, Base64.decodeBase64(text)); return arrayOfByte != null ? new String(arrayOfByte) : null; } }