• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

JAVA RSA密钥对的生成与验证

java 搞代码 4年前 (2022-01-09) 10次浏览 已收录 0个评论

在上一篇《Java&keytool生成RSA密钥》中,我们用keytool先生成密钥库和公钥证书,然后通过代码方式获得文件和BASE64串形式的公私密钥对,而其实根本无这么复杂,可直接通过JAVA代码获得公私密钥对。代码如下:

package com.bijian.test;import java.io.FileOutputStream;import java.io.ObjectOutputStream;import java.security.Key;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.NoSuchAlgorithmException;import java.secur<span style="color:transparent">本文来源gaodai#ma#com搞*!代#%^码网%</span>ity.SecureRandom;import sun.misc.BASE64Encoder;public class KeyPairGenUtil {    /** 指定加密算法为RSA */    private static final String ALGORITHM = "RSA";    /** 密钥长度,用来初始化 */    private static final int KEYSIZE = 1024;    /** 指定公钥存放文件 */    private static String PUBLIC_KEY_FILE = "PublicKey";    /** 指定私钥存放文件 */    private static String PRIVATE_KEY_FILE = "PrivateKey";    public static void main(String[] args) throws Exception {        generateKeyPair();        genKeyPair();    }    /**    * 生成密钥对    * @throws Exception    */    private static void generateKeyPair() throws Exception {        //     /** RSA算法要求有一个可信任的随机数源 */        //     SecureRandom secureRandom = new SecureRandom();        /** 为RSA算法创建一个KeyPairGenerator对象 */        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM);        /** 利用上面的随机数据源初始化这个KeyPairGenerator对象 */        //     keyPairGenerator.initialize(KEYSIZE, secureRandom);        keyPairGenerator.initialize(KEYSIZE);        /** 生成密匙对 */        KeyPair keyPair = keyPairGenerator.generateKeyPair();        /** 得到公钥 */        Key publicKey = keyPair.getPublic();        /** 得到私钥 */        Key privateKey = keyPair.getPrivate();        ObjectOutputStream oos1 = null;        ObjectOutputStream oos2 = null;        try {            /** 用对象流将生成的密钥写入文件 */            oos1 = new ObjectOutputStream(new FileOutputStream(PUBLIC_KEY_FILE));            oos2 = new ObjectOutputStream(new FileOutputStream(PRIVATE_KEY_FILE));            oos1.writeObject(publicKey);            oos2.writeObject(privateKey);        } catch (Exception e) {            throw e;        } finally {            /** 清空缓存,关闭文件输出流 */            oos1.close();            oos2.close();        }    }    private static void genKeyPair() throws NoSuchAlgorithmException {                /** RSA算法要求有一个可信任的随机数源 */        SecureRandom secureRandom = new SecureRandom();                /** 为RSA算法创建一个KeyPairGenerator对象 */        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM);        /** 利用上面的随机数据源初始化这个KeyPairGenerator对象 */        keyPairGenerator.initialize(KEYSIZE, secureRandom);        //keyPairGenerator.initialize(KEYSIZE);        /** 生成密匙对 */        KeyPair keyPair = keyPairGenerator.generateKeyPair();        /** 得到公钥 */        Key publicKey = keyPair.getPublic();        /** 得到私钥 */        Key privateKey = keyPair.getPrivate();        byte[] publicKeyBytes = publicKey.getEncoded();        byte[] privateKeyBytes = privateKey.getEncoded();        String publicKeyBase64 = new BASE64Encoder().encode(publicKeyBytes);        String privateKeyBase64 = new BASE64Encoder().encode(privateKeyBytes);        System.out.println("publicKeyBase64.length():" + publicKeyBase64.length());        System.out.println("publicKeyBase64:" + publicKeyBase64);        System.out.println("privateKeyBase64.length():" + privateKeyBase64.length());        System.out.println("privateKeyBase64:" + privateKeyBase64);    }}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:JAVA RSA密钥对的生成与验证
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址