package com.kidgrow.common.utils;
|
|
import javax.crypto.Cipher;
|
import java.security.KeyFactory;
|
import java.security.PrivateKey;
|
import java.security.PublicKey;
|
import java.security.interfaces.RSAPublicKey;
|
import java.security.spec.PKCS8EncodedKeySpec;
|
import java.security.spec.X509EncodedKeySpec;
|
import java.util.Base64;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
*
|
* @Description: RSA加解密工具<br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/2/3 15:52 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
public class RsaUtils {
|
/**
|
* 默认"RSA"="RSA/ECB/PKCS1Padding"
|
*/
|
private static final String CIPHER_INSTANCE = "RSA/ECB/PKCS1Padding";
|
|
/**
|
* 公钥加密
|
* @param content 要加密的内容
|
* @param publicKey 公钥
|
*/
|
public static String encrypt(String content, PublicKey publicKey) {
|
try{
|
Cipher cipher = Cipher.getInstance(CIPHER_INSTANCE);
|
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
|
byte[] output = cipher.doFinal(content.getBytes());
|
return Base64.getEncoder().encodeToString(output);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 公钥加密
|
* @param content 要加密的内容
|
* @param publicKey 公钥
|
*/
|
public static byte[] encrypt(byte[] content, PublicKey publicKey) {
|
try{
|
Cipher cipher = Cipher.getInstance(CIPHER_INSTANCE);
|
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
|
return cipher.doFinal(content);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 私钥解密
|
* @param content 要解密的内容
|
* @param privateKey 私钥
|
*/
|
public static byte[] decrypt(byte[] content, PrivateKey privateKey) {
|
try {
|
Cipher cipher = Cipher.getInstance(CIPHER_INSTANCE);
|
cipher.init(Cipher.DECRYPT_MODE, privateKey);
|
return cipher.doFinal(content);
|
} catch (Exception e){
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 私钥解密
|
* @param content 要解密的内容
|
* @param privateKey 私钥
|
*/
|
public static String decrypt(String content, PrivateKey privateKey) {
|
try {
|
Cipher cipher = Cipher.getInstance(CIPHER_INSTANCE);
|
cipher.init(Cipher.DECRYPT_MODE, privateKey);
|
byte [] b = cipher.doFinal(content.getBytes());
|
return Base64.getEncoder().encodeToString(b);
|
} catch (Exception e){
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* String转公钥PublicKey
|
* @param key 公钥字符
|
*/
|
public static RSAPublicKey getPublicKey(String key) throws Exception {
|
byte[] keyBytes;
|
keyBytes = Base64.getDecoder().decode(key);
|
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
|
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
|
return (RSAPublicKey)keyFactory.generatePublic(keySpec);
|
}
|
|
/**
|
* String转私钥PrivateKey
|
* @param key 私钥字符
|
*/
|
public static PrivateKey getPrivateKey(String key) throws Exception {
|
byte[] keyBytes;
|
keyBytes = Base64.getDecoder().decode(key);
|
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
|
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
|
return keyFactory.generatePrivate(keySpec);
|
}
|
}
|