/**
* 引进的包都是Java自带的jar包
* 秘钥相关包
* base64 编解码
* 这里只用到了编码
*/
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.util.HashMap;
import java.util.Map;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder; public class CreateSecrteKey { public class Keys { }
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<String, Object> keyMap) throws Exception {
//获得map中的公钥对象 转为key对象
Key key = (Key) keyMap.get(PUBLIC_KEY);
//byte[] publicKey = key.getEncoded();
//编码返回字符串
return encryptBASE64(key.getEncoded());
} //获得私钥
public static String getPrivateKey(Map<String, Object> keyMap) throws Exception {
//获得map中的私钥对象 转为key对象
Key key = (Key) keyMap.get(PRIVATE_KEY);
//byte[] privateKey = key.getEncoded();
//编码返回字符串
return encryptBASE64(key.getEncoded());
} //解码返回byte
public static byte[] decryptBASE64(String key) throws Exception {
return (new BASE64Decoder()).decodeBuffer(key);
} //编码返回字符串
public static String encryptBASE64(byte[] key) throws Exception {
return (new BASE64Encoder()).encodeBuffer(key);
} //map对象中存放公私钥
public static Map<String, Object> initKey() throws Exception {
//获得对象 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<String, Object> keyMap = new HashMap<String, Object>(2);
keyMap.put(PUBLIC_KEY, publicKey);
keyMap.put(PRIVATE_KEY, privateKey);
return keyMap;
} public static void main(String[] args) {
Map<String, Object> keyMap;
try {
keyMap = initKey();
String publicKey = getPublicKey(keyMap);
System.out.println(publicKey);
String privateKey = getPrivateKey(keyMap);
System.out.println(privateKey);
} catch (Exception e) {
e.printStackTrace();
}
}

最新文章

  1. FastDateFormat
  2. 修改TFS2013服务账户或者密码
  3. [IOS UIalert模版]
  4. 用Editplus开发HTML
  5. ArcGIS Server 缓存服务切图范围
  6. 解析UML9种图的作用
  7. Java泛型的好处
  8. [转]SQL语句:Group By总结
  9. Tomcat启动load action异常
  10. Linux下C编程通过宏定义打开和关闭调试信息
  11. List------Linked 链表
  12. poj 3641 ——2016——3——15
  13. 简单理解java中timer的schedule和scheduleAtFixedRate方法的区别
  14. C语言第十次博客作业--结构体
  15. python学习博客地址集合。。。
  16. openssl enc(对称加密)
  17. CentOS 7.0下解决ifconfig: command not found的方法
  18. MyEclipse 10.X激活方法
  19. 【SVN】关于钩子的一些使用
  20. Java Token的原理和生成使用机制

热门文章

  1. JSP、Servlet中的相对路径和绝对路径 页面跳转问题
  2. 编程实践笔记{Java 线程 并发处理 Webservice}(转)
  3. iOS 性能调优
  4. MyStack
  5. SpringMvc4中获取request、response对象的方法
  6. socket编程及API简介
  7. HDU 1896 Stones (优先队列)
  8. windows7 sqlserver2012 无法写入受保护的内存 解决办法
  9. es5 温故而知新 简单继承示例
  10. Python 爬虫实例(12)—— python selenium 爬虫