算法简介
RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。
算法实现
1、RSAUtils.java
package juice.core.util.codec;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.*;
import java.security.interfaces.RSAKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
/**
* @author Ricky Fung
*/
public abstract class RSAUtils {
private static final String RSA_ALGORITHM = "RSA";
//--------------------------------------------
/** 公钥加密 **/
public static byte[] encryptWithPublicKey(final byte[] data, RSAPublicKey publicKey) {
return doRSA(publicKey, Cipher.ENCRYPT_MODE, data);
}
/** 公钥解密 **/
public static byte[] decryptByPublicKey(final byte[] data, RSAPublicKey publicKey) {
return doRSA(publicKey, Cipher.DECRYPT_MODE, data);
}
//---------------------------------------------------
/** 私钥解密 **/
public static byte[] decryptWithPrivateKey(byte[] data, RSAPrivateKey privateKey) {
return doRSA(privateKey, Cipher.DECRYPT_MODE, data);
}
/** 私钥加密 **/
public static byte[] encryptWithPrivateKey(byte[] data, RSAPrivateKey privateKey){
return doRSA(privateKey, Cipher.ENCRYPT_MODE, data);