Java生成PEM格式公私钥

作者:じ☆ve宝贝

发布时间:2024-12-04T17:03:03

导入所需的jar包

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.69</version>
</dependency>

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcpkix-jdk15on</artifactId>
    <version>1.69</version> <!-- 同样,请根据需要替换为最新版本 -->
</dependency>

生成证书的代码

package cn.studyjava;

import java.io.FileWriter;
import java.io.IOException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openssl.PEMWriter;

public class StudyJavaApplication {

    static {
        // 添加 BouncyCastle 提供者
        Security.addProvider(new BouncyCastleProvider());
    }


    public static void main(String[] args) throws NoSuchAlgorithmException, IOException {
        // 1. 创建一个 RSA 密钥对生成器
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(2048); // 密钥位数,可以选择 2048 或更高

        // 2. 生成密钥对
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();

        // 3. 将公钥和私钥写入文件
        writePemFile("public_key.pem", publicKey);
        writePemFile("private_key.pem", privateKey);
    }


    // 写入 PEM 文件
    private static void writePemFile(String fileName, Object key) throws IOException {
        try (PEMWriter pemWriter = new PEMWriter(new FileWriter(fileName))) {
            pemWriter.writeObject(key);
        }
    }

}

到此就可以生成公私钥了。