zoukankan      html  css  js  c++  java
  • java RSA 生成公钥私钥

    /**
     * 引进的包都是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();
            }
        }
  • 相关阅读:
    gridview把textbox的值修改还是旧值的解决方法
    [转载]FMS Dev Guide学习笔记(验证客户端二)
    推荐几个Adobe Flex Builder 3的插件(代码格式化和fms服务器通讯文件(main.asc)编写)
    淘宝装修新旺铺如何让店招导航栏透明?
    淘宝店面怎么装修(不花分毫,玩转淘宝)
    教你处理明暗不匀的宝贝照片
    淘宝店铺装修 免费扶植版教程
    淘宝店铺(宝贝描述模板)克隆攻略
    如何用淘宝助理上传宝贝装修模板
    淘宝商城推广方案书
  • 原文地址:https://www.cnblogs.com/tiancai/p/9969367.html
Copyright © 2011-2022 走看看