课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 【昆明达内Java培训】java RSA 生成公钥私钥
  • 【昆明达内Java培训】java RSA 生成公钥私钥

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-24

  • 昆明达内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();

    }

    }

    了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:JavaMail邮件开发中带文本、图片、附件的邮件

下一篇:java中精度损失问题

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56