• 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     }
  • 相关阅读:
    获取用户登录次数(cookie)
    漂亮的 Checkbox and Radio (jQuery)
    FancyUpload3.0
    UI upload 多文件上传
    js 匿名函数 闭包
    c# 图片插入Excel
    sql查询优化 索引优化
    GridViewAddUpdateDelete_Ajax with jquery.blockUI
    动态自动搜索 Dynamic search (js版)
    master.dbo.spt_values
  • 原文地址:https://www.cnblogs.com/qurui1997/p/12809450.html
Copyright © 2020-2023  润新知