使用Java代码生成RSA公私钥的.pem文件

article/2025/10/11 10:26:45

大家好,我是神韵,是一个技术&生活博主。出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎大家留言讨论,你们的行动将是我无限的动力。
本篇主题是:使用Java代码生成RSA公私钥的.pem文件

上一篇文章介绍妙用了Git自带的OpenSSL生成RSA公私钥的.pem文件,这篇文章讲简单介绍用代码生成RSA公私钥的.pem文件。废话不多说,下面直接亮代码

 

package pers.xue.encrypt.rsa;import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.util.io.pem.PemObject;
import org.bouncycastle.util.io.pem.PemWriter;import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;/*** @author huangzhixue* @date 2022/11/15 09:55* @Description* refer to https://www.baeldung.com/java-rsa*/
@Slf4j
public class GeneratePemPariKeyFile {private static final String pairKeyDirectory = "src/main/resources/rsa";private static final String publicKeyPath = "src/main/resources/rsa/rsaPublicKey.pem";/*** 上面已经创建了src/main/resources/rsa,这里可以用全称,然后通过Paths.get去创建rsaPrivateKey.pem文件*/private static final String privateKeyPath = "src/main/resources/rsa/rsaPrivateKey.pem";private static final String publicKeyPrefix = "PUBLIC KEY";private static final String privateKeyPrefix = "PRIVATE KEY";public static void generatePublicKeyPemFile() throws NoSuchAlgorithmException, IOException {// algorithm 指定算法为RSAKeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");// 指定密钥长度为2048keyPairGenerator.initialize(2048);// 生成密钥KeyPair keyPair = keyPairGenerator.generateKeyPair();// 文件夹不存在,则先创建Files.createDirectories(Paths.get(pairKeyDirectory));try(FileWriter priFileWriter = new FileWriter(privateKeyPath);PemWriter priPemWriter = new PemWriter(priFileWriter);FileWriter pubFileWriter = new FileWriter(publicKeyPath);PemWriter pubPemWriter = new PemWriter(pubFileWriter)) {priPemWriter.writeObject(new PemObject(privateKeyPrefix, keyPair.getPrivate().getEncoded()));pubPemWriter.writeObject(new PemObject(publicKeyPrefix, keyPair.getPublic().getEncoded()));} catch (IOException e) {log.error("generate pem file fail", e);}}public static void main(String[] args) throws NoSuchAlgorithmException, IOException {generatePublicKeyPemFile();}
}

代码首先通过KeyPairGenerator指定algorithm为RSA,长度为2048,生成长度为48的RSA密钥。然后通过PemWriter这个类来写出PemObject文件

其它代码都是文件输出的基础,这里不再介绍。

需要注意的点,这里必须指定为PUBLIC KEY 而不是RSA PUBLIC KEY,后果指定后者,后续使用可能会出现错误,比如转Jwt时会报序列错误,这里简单提一下。

 最后会在资源目录下生成两个pem文件,如下所示


http://chatgpt.dhexx.cn/article/T8Xrjot3.shtml

相关文章

妙借Git自带的OpenSSL生成RSA公私钥的.pem 文件

大家好,我是神韵,是一个技术&生活博主。出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎来点赞打卡,你们的行动将是我无限的动力。 本篇主题是:妙…

Windows Terminal 使用 pem 文件连接服务器

示例: ssh -i C:\Users\dev\key.pem root18.18.18.18

linux ssh pem 登陆,Linux 生成pem文件 用于免密登录

1.在远程机器生成.pem文件 生成密钥对: $ ssh-keygen -t rsa -b 2048 -v 直接确认下一步 查看生成的密钥对: $ ls ~/.ssh/ 将私钥重命名至id_rsa.pem: $ mv ~/.ssh/id_rsa ~/.ssh/id_rsa.pem 修改~/.ssh/目录权限: $ chmod 700 ~/…

vscode 使用pem文件免密连接服务器

操作步骤和vscode 配置免密连接服务器很相似,不过使用的是 pem 文件。步骤如下: 将 pem 文件放在 ~/.ssh/ 文件夹下(可选); 配置 ~/.ssh/config ,填写需要连接的主机信息: Host my_server_name…

php生成pem文件怎么打开,iOS推送证书生成pem文件(详细步骤)

1、pem文件概述 pem文件是服务器向苹果服务器做推送时候需要的文件,主要是给php向苹果服务器验证时使用,下面介绍一下pem文件的生成。 2、生成pem文件步骤 1、打开钥匙串,选择需要生成的推送证书 选择相应证书 2、将Certificate和Private key…

从openssl rsa pem文件中提取公私钥数据实现

RSA为非对称加密算法,关于其介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/43638013。 OpenSSL最新版为 1.1.1g,在Windows上和Linux上编译源码时均可以生成可执行文件openssl。通过此执行文件即可产生rsa公钥-私钥对&am…

搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀

文章目录 结论ASN.1PEM.pfx介绍应用 .p12.p8.cer.crtX.509参考 http证书相关的文件格式、编码、概念比较偏多。这里对文件的各种文件后缀和格式做了统一的整理和解释说明 我在国密实验室申请下载了一个证书,解压后如下图,起初我是比较懵的,各…

vs2017下载

1.官网下载 由于网络日益发达,我相信大家可以从各种渠道得到下载地址,vs2017已与之前版本不同的是已经采用了下载器下载,下面是我使用的下载地址 Visual Studio 较旧的下载 - 2017、2015 和以前的版本 进入登录即可获得下载地址&#xff0c…

Visual Studio 2015官方社区版/专业版/专业版下载地址

Visual Studio 2015官方社区版/专业版/专业版下载地址 以下 Visual Studio 2015 社区版/专业版/专业版资源都是官方MSDN原版下载资源,统一为ISO格式镜像,使用解压软件解压之后点击主程序安装即可。 Visual Studio 2015 官方简体中文专业版ISO镜像下载地址…

vs2017支持所有版本VC

版权归属: https://blog.csdn.net/halchanchanhaloutlook.com 更多关注: https://github.com/chanhalhttps://www.zhihu.com/people/chanhal 前言 研究目标:VS2017作为目前最新的IDE,让其支持所有版本的VC编译环境 必要性&am…

VS2017社区版Community 许可证过期解决方法

之前过期可以登录自己的github账号再认证一下就OK了,但是这次就是登录不上会有脚本错误的弹窗,搜到一个方法亲测有效,也非常简单,找一个同等开发环境,把对应路径下的许可证文件夹拷贝放到自己的文件夹下即可。 感谢各…

下载安装Visual Studio 2017 Community 来编译NIM_PC_DEMO

1、下载vs2017的引导程序 官方并没有为vs2017提供离线安装包,所以我们选择在线安装。 首先我们下载vs2017的引导程序:Visual Studio 2017安装包 包含如下4个文件: vs_Community.exe: 社区版,免费。但是需要登录微软…

Visual Studio 2019社区版许可

Visual Studio 2019社区版许可 #VS2019版本介绍 Visual Studio Community:社区版 Visual Studio Professional:专业版 Visual Studio Enterprise:企业版 Community:社区版,30天试用之后必须要登录才能使用 社区版是无…

Visual Studio 2017 version 15.9 官方最新版本下载(含那个啥码)

Visual Studio 2017 version 15.9 官方最新版本下载 (含那个啥码) 简单介绍,VS2017有3个版本: ①community,社区版,含基本的开发功能,免费!免费!免费! ②professional,专业版,社区版的加强版&a…

【官方解说】Visual Studio 2017(VS 2017)各个版本有什么区别

细致区别如上图所示 企业版点满图中技能树,能够提供点对点的解决方案,充分满足正规企业的要求。 PS:技能最多,肯定也就价格最贵 专业版中提供的专业开发者工具、服务和订阅就成了最佳选择。 PS:技能多,价…

VS2017和VS2019(社区版)离线激活方式

一、VS2017激活 1.首先在能联网的电脑上安装VS2017社区版,完成注册后将路径下的OnlineLicensing文件拷贝至离线电脑的对应路径即可,路径:C:\Users\**\AppData\Local\Microsoft\VSCommon 二、VS2019激活 1.与上面一样先在电脑上注册&#x…

vs2019社区版下载教程(详细)

文章目录 1.下载VS 2019 Community引导程序2.安装VS 2019 1.下载VS 2019 Community引导程序 VS2019下载地址和安装教程(图解) 继 VS2015 和 VS2017 之后,微软于 2019 年 4 月 3 日发布了新版的集成开发环境——VS2019。 和 VS2017 相比&…

VS2017社区版离线安装

VS2017社区版离线安装 目前微软官网提供Visual Studio 2017在线安装版本,对于离线安装只提供说明。 Visual Studio 2017官网提供四个版本,这里个人学习,所以选择社区版的,下面说的也是社区版的安装步骤。 一、离线下载器下载 在…

Visual studio 2019 社区版下载和安装

Visual studio 分 企业版 ,专业版和 社区版,其中社区版是供开发人员免费使用的,且功能齐全,这里使用Visual Studio 2019 社区版来安装。 1. 下载 vs_community__2019百度网盘下载链接(这个是我从微软官网上下载的&…

VS2017下载 vs2017社区版

找到DDConfigCA.exe,管理员身份运行一下, 就可以了,亲测有效 可能现在大伙都已经开始使用VS2019进行开发了。VS2019的下载使用也都很简单。由于工作需要,今天要在笔记本上安装VS2017,结果发现,VS2017的下载变得不是那么容易了&am…