/*** 引进的包都是Java自带的jar包
* 秘钥相关包
* base64 编解码
* 这里只用到了编码*/
importjava.security.Key;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.interfaces.RSAPrivateKey;importjava.security.interfaces.RSAPublicKey;importjava.util.HashMap;importjava.util.Map;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;public classCreateSecrteKey {public classKeys {
}public static final String KEY_ALGORITHM = "RSA";//public static final String SIGNATURE_ALGORITHM = "MD5withRSA";
private static final String PUBLIC_KEY = "RSAPublicKey";private static final String PRIVATE_KEY = "RSAPrivateKey";//获得公钥
public static String getPublicKey(Map keyMap) throwsException {//获得map中的公钥对象 转为key对象
Key key =(Key) keyMap.get(PUBLIC_KEY);//byte[] publicKey = key.getEncoded();//编码返回字符串
returnencryptBASE64(key.getEncoded());
}//获得私钥
public static String getPrivateKey(Map keyMap) throwsException {//获得map中的私钥对象 转为key对象
Key key =(Key) keyMap.get(PRIVATE_KEY);//byte[] privateKey = key.getEncoded();//编码返回字符串
returnencryptBASE64(key.getEncoded());
}//解码返回byte
public static byte[] decryptBASE64(String key) throwsException {return (newBASE64Decoder()).decodeBuffer(key);
}//编码返回字符串
public static String encryptBASE64(byte[] key) throwsException {return (newBASE64Encoder()).encodeBuffer(key);
}//map对象中存放公私钥
public static Map initKey() throwsException {//获得对象 KeyPairGenerator 参数 RSA 1024个字节
KeyPairGenerator keyPairGen =KeyPairGenerator.getInstance(KEY_ALGORITHM);
keyPairGen.initialize(1024);//通过对象 KeyPairGenerator 获取对象KeyPair
KeyPair keyPair =keyPairGen.generateKeyPair();//通过对象 KeyPair 获取RSA公私钥对象RSAPublicKey RSAPrivateKey
RSAPublicKey publicKey =(RSAPublicKey) keyPair.getPublic();
RSAPrivateKey privateKey=(RSAPrivateKey) keyPair.getPrivate();//公私钥对象存入map中
Map keyMap = new HashMap(2);
keyMap.put(PUBLIC_KEY, publicKey);
keyMap.put(PRIVATE_KEY, privateKey);returnkeyMap;
}public static voidmain(String[] args) {
MapkeyMap;try{
keyMap=initKey();
String publicKey=getPublicKey(keyMap);
System.out.println(publicKey);
String privateKey=getPrivateKey(keyMap);
System.out.println(privateKey);
}catch(Exception e) {
e.printStackTrace();
}
}