123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- package com.chinacreator.process.util;
- import org.apache.commons.codec.binary.Base64;
- import javax.crypto.Cipher;
- import java.nio.charset.Charset;
- import java.security.*;
- import java.security.spec.PKCS8EncodedKeySpec;
- import java.security.spec.X509EncodedKeySpec;
- /**
- * RSA工具类
- *
- * @author wjf
- * @version 2020-4-21
- */
- public class RsaUtils {
- /**
- * 使用公钥加密
- *
- * @param content
- * @param publicKey
- * @param charset
- * @return
- * @throws GeneralSecurityException
- */
- public static String encryptWithPublicKey(String content, String publicKey, Charset charset)
- throws GeneralSecurityException {
- Key key = getPublicKey(publicKey);
- return encryptWithKey(content, key, charset);
- }
- /**
- * 使用密钥加密
- *
- * @param content
- * @param key
- * @param charset
- * @return
- * @throws GeneralSecurityException
- */
- public static String encryptWithKey(String content, Key key, Charset charset)
- throws GeneralSecurityException {
- if (content == null) {
- return null;
- }
- // 对数据加密
- Cipher cipher = Cipher.getInstance("RSA");
- cipher.init(Cipher.ENCRYPT_MODE, key);
- if (charset == null) {
- cipher.update(content.getBytes());
- } else {
- cipher.update(content.getBytes(charset));
- }
- byte[] signed = cipher.doFinal();
- return Base64.encodeBase64String(signed);
- }
- /**
- * 使用私钥解密
- *
- * @param content
- * @param privateKey
- * @param charset
- * @return
- * @throws GeneralSecurityException
- */
- public static String decryptWithPrivateKey(String content, String privateKey, Charset charset)
- throws GeneralSecurityException {
- Key key = getPrivateKey(privateKey);
- return decryptWithKey(content, key, charset);
- }
- /**
- * 使用密钥解密
- *
- * @param content
- * @param key
- * @param charset
- * @return
- * @throws GeneralSecurityException
- */
- public static String decryptWithKey(String content, Key key, Charset charset)
- throws GeneralSecurityException {
- if (content == null) {
- return null;
- }
- try {
- String result = null;
- // 对数据解密
- Cipher cipher = Cipher.getInstance("RSA");
- cipher.init(Cipher.DECRYPT_MODE, key);
- byte[] data = Base64.decodeBase64(content);
- cipher.update(data);
- byte[] signed = cipher.doFinal();
- if (charset != null) {
- result = new String(signed, charset);
- } else {
- result = new String(signed);
- }
- return result;
- } catch (Exception e) {
- return null;
- }
- }
- /**
- * 获取公钥密钥
- * @param key
- * @return
- * @throws GeneralSecurityException
- */
- public static PublicKey getPublicKey(String key) throws GeneralSecurityException {
- if (key == null) {
- return null;
- }
- KeyFactory keyFactory = KeyFactory.getInstance("RSA");
- byte[] encodedKey = Base64.decodeBase64(key);
- return keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
- }
- /**
- * 获取私钥密钥
- * @param key
- * @return
- * @throws GeneralSecurityException
- */
- public static PrivateKey getPrivateKey(String key)
- throws GeneralSecurityException {
- if (key == null) {
- return null;
- }
- KeyFactory keyFactory = KeyFactory.getInstance("RSA");
- byte[] encodedKey = Base64.decodeBase64(key);
- return keyFactory.generatePrivate(new PKCS8EncodedKeySpec(encodedKey));
- }
- public static void main(String[] args) throws GeneralSecurityException {
- String publicKey= "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyw5ghlH6GCIkM9Lt7uGcI/QuebfXgNq3CsOL0/DrbayGp+W/9Fz78n2ho3rQUvX4hw6WXxTxFSgQdZVhY9E+WAfYiW0qi8N+vwgZZ1awHQqJV6U91CeReR8FHOS9BOMxjirjpsja2m0hrrSItAOAyC/bH+d28NLveewYiPDx3OK0KWByOGBjI2TQFOHxjgYzLkFgd7ZbKUxmJ1KVrb/1qr4NUmqJhNqoWeXfRkNfEL7hp41d9uM6MC7YobBG+0azcIKm4bCOD1KkY3GpsTANJCt0X7aH/2irTW658qbshiZm8QEkWHx3rZAl5t+FLxDYTdZhoq3JBD4M4g8nmlOM8wIDAQAB";
- String privateKey = "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";
- String enr = RsaUtils.encryptWithPublicKey("appKey=3000004628&callNumber=16602020321", publicKey, Charset.defaultCharset());
- System.out.println(enr);
- // // BASE64加密
- // byte[] data = Base64.encodeBase64(enr.getBytes());
- // System.out.println("BASE64加密:" + new String(data));
- //
- // // BASE64解密
- // byte[] bytes = Base64.decodeBase64(data);
- // System.out.println("BASE64解密:" + new String(bytes));
- String dec = RsaUtils.decryptWithPrivateKey(enr, privateKey, Charset.defaultCharset());
- System.out.println(dec);
- }
- }
|