|
@@ -1,5 +1,6 @@
|
|
|
package com.zhongzheng.common.utils;
|
|
|
|
|
|
+import org.apache.commons.codec.binary.Base64;
|
|
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
|
|
import javax.crypto.BadPaddingException;
|
|
|
import javax.crypto.Cipher;
|
|
@@ -7,7 +8,13 @@ import javax.crypto.IllegalBlockSizeException;
|
|
|
import javax.crypto.NoSuchPaddingException;
|
|
|
import javax.crypto.spec.IvParameterSpec;
|
|
|
import javax.crypto.spec.SecretKeySpec;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.InputStream;
|
|
|
import java.security.*;
|
|
|
+import java.security.interfaces.RSAPrivateKey;
|
|
|
+import java.security.interfaces.RSAPublicKey;
|
|
|
+import java.security.spec.PKCS8EncodedKeySpec;
|
|
|
+import java.security.spec.X509EncodedKeySpec;
|
|
|
|
|
|
|
|
|
public class AES {
|
|
@@ -84,4 +91,68 @@ public class AES {
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * RSA公钥加密
|
|
|
+ *
|
|
|
+ * @param str
|
|
|
+ * 加密字符串
|
|
|
+ * @param publicKey
|
|
|
+ * 公钥
|
|
|
+ * @return 密文
|
|
|
+ * @throws Exception
|
|
|
+ * 加密过程中的异常信息
|
|
|
+ */
|
|
|
+ public static String encrypt( String str, String publicKey ) throws Exception{
|
|
|
+ //base64编码的公钥
|
|
|
+ byte[] decoded = Base64.decodeBase64(publicKey);
|
|
|
+ RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
|
|
|
+ //RSA加密
|
|
|
+ Cipher cipher = Cipher.getInstance("RSA");
|
|
|
+ cipher.init(Cipher.ENCRYPT_MODE, pubKey);
|
|
|
+ String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
|
|
|
+ return outStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * RSA私钥解密
|
|
|
+ *
|
|
|
+ * @param str
|
|
|
+ * 加密字符串
|
|
|
+ * @param privateKey
|
|
|
+ * 私钥
|
|
|
+ * @return 铭文
|
|
|
+ * @throws Exception
|
|
|
+ * 解密过程中的异常信息
|
|
|
+ */
|
|
|
+ public static String decrypt(String str, String privateKey) throws Exception{
|
|
|
+ //64位解码加密后的字符串
|
|
|
+ byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
|
|
|
+ //base64编码的私钥
|
|
|
+ byte[] decoded = Base64.decodeBase64(privateKey);
|
|
|
+ RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));
|
|
|
+ //RSA解密
|
|
|
+ Cipher cipher = Cipher.getInstance("RSA");
|
|
|
+ cipher.init(Cipher.DECRYPT_MODE, priKey);
|
|
|
+ String outStr = new String(cipher.doFinal(inputByte));
|
|
|
+ return outStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getStringByInputStream_1(InputStream inputStream){
|
|
|
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
|
+ try {
|
|
|
+ byte[] b = new byte[10240];
|
|
|
+ int n;
|
|
|
+ while ((n = inputStream.read(b)) != -1) {
|
|
|
+ outputStream.write(b, 0, n);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ try {
|
|
|
+ inputStream.close();
|
|
|
+ outputStream.close();
|
|
|
+ } catch (Exception e1) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return outputStream.toString();
|
|
|
+ }
|
|
|
}
|