import java.math.BigInteger;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Cipher;
import org.apache.commons.lang.ArrayUtils;
/**
* RSA加密与解密,采用Base64编码
*
* @author East271536394
* @version 2012-6-25 上午9:18:57
*/
public class RSAProvider {
/**
* KEY_ALGORITHM
*/
public static final String KEY_ALGORITHM = "RSA";
/**
* 加密Key的长度等于1024或者2048
*/
public static int KEYSIZE = 1024;
/**
* 解密时必须按照此分组解密
*/
public static int decodeLen = KEYSIZE / 8;
/**
* 加密时小于117即可
*/
public static int encodeLen = 100;
/**
* 公钥
*/
private static final String PUBLIC_KEY = "publicKey";
/**
* 私钥
*/
private static final String PRIVATE_KEY = "privateKey";
/**
* MODULES
*/
private static final String MODULES = "RSAModules";
/**
*
* 生成KeyPair
* @return
* @throws Exception
* @author East271536394
*/
public static Map<String, Object> generateKeyPair() throws Exception {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
keyPairGen.initialize(KEYSIZE);
KeyPair keyPair = keyPairGen.generateKeyPair();
// 公钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
// 私钥
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
BigInteger modules = privateKey.getModulus();
Map<String, Object> keys = new HashMap<String, Object>(3);
keys.put(PUBLIC_KEY, publicKey);
keys.put(PRIVATE_KEY, priva
RSA 加密算法(分组加密,分组解密)
最新推荐文章于 2024-07-03 11:47:27 发布
本文深入探讨了RSA加密算法,重点讲解了如何进行分组加密和解密的过程,同时涵盖了可能遇到的异常处理和数据转换(如byte到string)的细节,对于理解RSA算法及其在实际应用中的操作具有指导意义。
摘要由CSDN通过智能技术生成