java-RSA 生成秘钥和公钥

 1 //加密方式
 2     public static final String KEY_ALGORITHM = "RSA";
 3     //公钥
 4     public static final String PUBLIC_KEY = "RSAPublicKey";
 5     //私钥
 6     public static final String PRIVATE_KEY = "RSAPrivateKey";
 7     
 8     public static void main(String[] args) {
 9         
10         Map<String, Object> map;
11         try {
12             map=initKey();
13             String publicKey = getPublicKey(map);
14             System.out.println(publicKey);
15             String privateKey = getPrivateKey(map);
16             System.out.println(privateKey);
17         } catch (Exception e) {
18             e.printStackTrace();
19         }
20         
21     }
22     /**
23      * 获取公钥
24      * @param keyMap
25      * @return
26      */
27     public static String getPublicKey(Map<String, Object> keyMap){
28         //获取map中的公钥转化为key对象
29        Key key = (Key) keyMap.get(PUBLIC_KEY);
30        return encryptBASE64(key.getEncoded());
31     }
32 
33     
34     /**
35      * {@link Map}
36      * map中存放私钥和公钥
37      * @return
38      * @throws Exception
39      */
40     public static Map<String, Object> initKey() throws Exception{
41         //获得对象 KeyPairGenerator 参数 RSA 1024个字节
42         KeyPairGenerator key = KeyPairGenerator.getInstance(KEY_ALGORITHM);
43         key.initialize(1024);//这个地方官方文档说的必须初始化 可以参考一下jdk1.8官方文档
44         KeyPair generateKeyPair = key.generateKeyPair();
45       //通过对象 KeyPair 获取RSA公私钥对象RSAPublicKey RSAPrivateKey
46         RSAPublicKey publicKey = (RSAPublicKey) generateKeyPair.getPublic();
47         RSAPrivateKey privateKey = (RSAPrivateKey) generateKeyPair.getPrivate();
48         Map<String, Object> map =  new HashMap<String, Object>(2);
49         map.put(PUBLIC_KEY, publicKey);
50         map.put(PRIVATE_KEY, privateKey);
51         return map;
52     }
53     
54     /**
55      * 获取私钥
56      * @param keyMap
57      * @return
58      */
59     public static String getPrivateKey(Map<String, Object> keyMap){
60         //获取map中的公钥转化为key对象
61        Key key = (Key) keyMap.get(PRIVATE_KEY);
62        return encryptBASE64(key.getEncoded());
63     }
64 
65     /**
66      * 解码返回字节数组
67      * @param key
68      * @return
69      * @throws IOException
70      */
71     public static byte[] decryptBASE64(String key) throws IOException {
72         return new BASE64Decoder().decodeBuffer(key);
73     }
74     /**
75      * 编码返回字符串
76      * @param encoded
77      * @return
78      */
79     public static String encryptBASE64(byte[] encoded) {
80         return new BASE64Encoder().encodeBuffer(encoded);
81     }