首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何读取.pem文件以获取私钥和​​公钥

要读取.pem文件以获取私钥和公钥,您可以使用以下方法:

  1. 使用Python的cryptography库:

安装cryptography库:

代码语言:txt
复制
pip install cryptography

读取私钥和公钥:

代码语言:python
代码运行次数:0
复制
from cryptography.hazmat.primitives.serialization import load_pem_private_key, load_pem_public_key
from cryptography.hazmat.backends import default_backend

def read_private_key(pem_file):
    with open(pem_file, 'rb') as key_file:
        private_key = load_pem_private_key(
            key_file.read(),
            password=None,
            backend=default_backend()
        )
    return private_key

def read_public_key(pem_file):
    with open(pem_file, 'rb') as key_file:
        public_key = load_pem_public_key(
            key_file.read(),
            backend=default_backend()
        )
    return public_key
  1. 使用OpenSSL命令行工具:

安装OpenSSL:

代码语言:txt
复制
# 对于Windows,请访问 https://slproweb.com/products/Win32OpenSSL.html 下载并安装
# 对于Linux,请使用包管理器安装,例如:
sudo apt-get install openssl

读取私钥和公钥:

代码语言:txt
复制
# 读取私钥
openssl rsa -in private_key.pem -noout -text

# 读取公钥
openssl rsa -pubin -in public_key.pem -noout -text
  1. 使用Node.js的crypto库:

安装crypto库:

代码语言:txt
复制
npm install crypto

读取私钥和公钥:

代码语言:javascript
复制
const fs = require('fs');
const crypto = require('crypto');

function readPrivateKey(pemFile) {
    const privateKey = fs.readFileSync(pemFile);
    return crypto.createPrivateKey(privateKey);
}

function readPublicKey(pemFile) {
    const publicKey = fs.readFileSync(pemFile);
    return crypto.createPublicKey(publicKey);
}
  1. 使用Java的Bouncy Castle库:

安装Bouncy Castle库:

代码语言:txt
复制
# 对于Maven项目,在pom.xml中添加以下依赖:<dependency>
   <groupId>org.bouncycastle</groupId>
   <artifactId>bcprov-jdk15on</artifactId>
   <version>1.68</version>
</dependency>

# 对于Gradle项目,在build.gradle中添加以下依赖:
implementation 'org.bouncycastle:bcprov-jdk15on:1.68'

读取私钥和公钥:

代码语言:java
复制
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import org.bouncycastle.openssl.jcajce.JceOpenSSLPKCS8DecryptorProviderBuilder;
import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
import org.bouncycastle.openssl.PEMEncryptedKeyPair;
import org.bouncycastle.openssl.PEMKeyPair;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import java.io.FileReader;
import java.io.IOException;
import java.security.PrivateKey;
import java.security.PublicKey;

public class Main {
    public static PrivateKey readPrivateKey(String pemFile) throws IOException {
        try (PEMParser pemParser = new PEMParser(new FileReader(pemFile))) {
            Object object = pemParser.readObject();
            JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
            if (object instanceof PEMEncryptedKeyPair) {
                PEMEncryptedKeyPair encryptedKeyPair = (PEMEncryptedKeyPair) object;
                PEMKeyPair keyPair = encryptedKeyPair.decryptKeyPair(new JceOpenSSLPKCS8DecryptorProviderBuilder().build("your-password".toCharArray()));
                return converter.getPrivateKey(keyPair.getPrivateKeyInfo());
            } else if (object instanceof PEMKeyPair) {
                PEMKeyPair keyPair = (PEMKeyPair) object;
                return converter.getPrivateKey(keyPair.getPrivateKeyInfo());
            }
        }
        return null;
    }

    public static PublicKey readPublicKey(String pemFile) throws IOException {
        try (PEMParser pemParser = new PEMParser(new FileReader(pemFile))) {
            Object object = pemParser.readObject();
            JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
            if (object instanceof PEMKeyPair) {
                PEMKeyPair keyPair = (PEMKeyPair) object;
                return converter.getPublicKey(keyPair.getPublicKeyInfo());
            }
        }
        return null;
    }
}

请注意,这些示例仅用于演示如何读取.pem文件中的私钥和公钥。在实际应用中,您需要根据您的需求和环境进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pfx文件解析私钥和公钥

最近和某行对接,发现私钥和公钥以pfx文件形式传给我们,需要我们自己进行读取,当时头就有点儿大(菜鸟,第一次接触,哎~~~) 先说一下pfx证书与cer证书的区别 PFX证书:由Public Key Cryptography...Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。...CER证书:证书中没有私钥,DER 编码二进制格式的证书文件/BASE64 编码格式的证书文件,以cer作为证书文件后缀名。 综上所述:pfx证书文件中比cer文件中多了私钥。...其他不多说看代码,pfx文件的生成方法及私钥和公钥导出方法(.net版) /// /// 获取私钥 /// ...{ return “”; } } /// /// 获取公钥

1.5K20
  • 手把手教你接入支付宝支付

    支付宝密钥处理体系 所以需要获取到应用公钥、应用私钥以及支付宝公钥: ①应用公钥 由商户自己生成的RSA公钥(与应用私钥必须匹配),商户需上传应用公钥到支付宝开放平台,以便支付宝使用该公钥验证该交易是否是商户发起的...生成应用私钥pem文件,输入命令:genrsa -out rsa_private_key.pem 2048 生成应用公钥pem文件,输入命令:rsa -in rsa_private_key.pem...-pubout -out rsa_public_key.pem 支付宝公钥需要上传应用公钥获取,如果不使用pem文件,代码中直接放上支付宝公钥就行,如果要使用pem文件,可以将应用公钥的pem文件复制一份...② 从pem文件中读取密钥 首先获取存放密钥文件的路径,为了防止出现意外,可获取文件的绝对路径,如下: /// /// 获取私钥公钥的路径(绝对路径) /// ...,区别就不细说,这里使用RSACheckV1方法,第一个参数便是支付宝返回的异步通知结果,第二个参数传入支付宝公钥,同样最后一个参数传false从代码读取支付宝公钥,传true从pem 文件中读取。

    2.2K10

    再谈加密-RSA非对称加密的理解和使用

    描述了将用户公钥、私钥、证书和其他相关信息打包的语法。 含有私钥,同时可以有公钥,有口令保护 格式一般为 .pfx。 由于它可以加密码保护,打开时需要一串特殊密码,所以相对安全些。...pem格式 最普通的证书格式,以-----BEGIN CERTIFICATE----- 开头,以-----END CERTIFICATE-----结尾;有些pem证书把私钥也放在了一个文件中,但是很多平台还是需求证书和私钥分开放在不同的文件中...pem证书有以下特点: base64编码; 有.pem, .crt, .cer, .key文件后缀; Apache等类似服务器使用pem格式证书; der格式 der格式是pem格式证书的二进制格式,证书和私钥都可以以...其特点为: base64编码; 文件后缀为 .p7p, .p7c; window或java tomcat等平台支持此类型; PKCS#12(pfx)格式 它能把服务器证书(包括公钥),中间证书和私钥存储在一起...文件里 openssl rsa -in rsa_private_key.pem -pubout -out pub.pem // 通过私钥生产公钥 此外,介绍一下openssl提供的一个测试加密速度的小工具

    2.6K90

    详解 RSA 非对称加密

    数字证书 公钥传输问题 在密文传输过程中,客户端(Client C)向服务器(Server S)发送数据,C使用S的公钥加密,这样只有S使用自己的私钥解密才能拿到信息,其他人即使得到了数据,没有S的私钥也没用...描述了将用户公钥、私钥、证书和其他相关信息打包的语法。 含有私钥,同时可以有公钥,有口令保护 格式一般为 .pfx。 由于它可以加密码保护,打开时需要一串特殊密码,所以相对安全些。...pem格式 最普通的证书格式,以-----BEGIN CERTIFICATE-----开头,以-----END CERTIFICATE-----结尾;有些pem证书把私钥也放在了一个文件中,但是很多平台还是需求证书和私钥分开放在不同的文件中...pem证书有以下特点: base64编码; 有.pem, .crt, .cer, .key文件后缀; Apache等类似服务器使用pem格式证书; der格式 der格式是pem格式证书的二进制格式,证书和私钥都可以以...其特点为: base64编码; 文件后缀为 .p7p, .p7c; window或java tomcat等平台支持此类型; PKCS#12(pfx)格式 它能把服务器证书(包括公钥),中间证书和私钥存储在一起

    1.6K20

    安全的数据库图形管理工具(1):准备密钥

    非对称加密与对称加密不同的是它有两个密钥——公钥和私钥。公钥是公开的,可以给任何人;私钥只能你自己保管。...等运行完之后查看客户端程序对应的目录下会有两个文件——self_private_key.pem(自己的私钥)和server_public_key.pem(服务器的公钥)。如图所示。 ?...同样的,服务器程序所在的目录下也会有两个文件——self_private_key.pem(自己的私钥)和client_public_key.pem(客户端的公钥)。 ?...() # 打开公钥文件并读取 public_key = rsa.PublicKey.load_pkcs1(public_key) # 加载公钥 private_key = open("self_private_key.pem...() # 打开公钥文件并读取 public_key = rsa.PublicKey.load_pkcs1(public_key) # 加载公钥 private_key = open("self_private_key.pem

    1.2K20

    使用openssl实现RSA非对称加密

    简单定义:公钥和私钥,加密和解密使用的是两个不同的密钥,所以是非对称 系统:ubuntu 14.04 软件:openssl java php 生成公钥私钥 使用命令生成私钥: openssl genrsa...-out rsa_private_key.pem 1024 参数:genrsa 生成密钥 -out 输出到文件 rsa_private_key.pem 文件名 1024 长度 从私钥中提取公钥...: openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 参数: rsa 提取公钥 -in 从文件中读入 rsa_private_key.pem...文件名 -pubout 输出 -out 到文件 rsa_public_key.pem 文件名 shell加解密 新建一个readme.txt 内容是taoshihan 使用公钥加密: openssl...加密 -in 从文件输入 readme.txt 文件名 -inkey 输入的密钥 rsa_public_key.pem 上一步生成的公钥 -pubin 表名输入是公钥文件 -out输出到文件

    3.6K10

    接口数据使用了 RSA 加密和签名?一篇文章带你搞定

    python来实现RSA加解密和签名测试面试宝典 ​ 2、RSA 算法简介: RSA加密算法是一种非对称加密算法,加密的秘钥是由公钥和私钥两部分组成秘钥对,公钥用来加密消息,私钥用来对消息进行解密...A的消息通过加密和签名处理之后,再发送出去给B,就算被人截获了,也没有关系,没有B的私钥无法对消息进行解密,就算获取A的公钥,想要发送伪造信息,没有A私钥也无法进行签名。...rsa = RSA.generate(1024, random_gen) # 获取公钥,保存到文件 private_pem = rsa.exportKey() with open('private.pem...', 'wb') as f: f.write(private_pem) # 获取私钥保存到文件 public_pem = rsa.publickey().exportKey() with open...from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 msg = "待加密明文内容" # 读取文件中的公钥 key

    2.1K20

    生成CSR和自签名证书

    2.公钥(Public Key):CSR包含了与证书请求者相关的公钥。这个公钥用于加密和数字签名。3.扩展信息:除了主题信息和公钥,CSR还可以包含各种扩展信息,以指定证书的用途、有效期、密钥用途等。...CSR 的生成 生成CSR通常包括以下步骤: 1.生成密钥对:首先,生成一个密钥对,其中包括公钥和私钥。通常使用RSA或ECDSA算法生成密钥。2.创建主题信息:确定要包含在CSR中的主题信息。...•代码签名:开发者可以生成CSR,用于获取代码签名证书,以确保其代码在分发和执行时的完整性和真实性。...,以及私钥和公钥管理的包,比如crypto/rsa。...私钥也被生成并保存到文件中。 生成自签名证书: 生成自签名证书的过程需要使用之前生成的CSR和私钥。

    63940

    非对称加密与安全证书看这一篇就懂了

    公钥、私钥和证书 除算法外,非对称加密中另外两个重要的概念是公钥和私钥。公钥对外公开,任何人均可持有和使用;私钥自行保管,其安全性是通信安危的关键。...私钥和公钥的作用一般分为两种: 公钥加密,私钥解密,主要用于通信; 私钥加密(签名),公钥解密(验证),主要用于数字签名。...证书包含公钥,所以拿到证书意味着就拿到了对方的公钥。几乎所有的浏览器都会对证书进行校验,以确保网页通信中的安全。...CSR(Certificate Sign Request)、公钥、密钥和证书归属为一类。CSR 用来获取证书,包含申请人的公钥、邮件等证明身份的信息。...遵循 X509 标准的证书文件结尾多为 PEM、der、crt 等;遵循 PKCS 标准的证书常用后缀名是 pfx、p12 等。 本次对接晕乎的第二个地方是一处地方读取密钥需要密码,另一处直接读取。

    1.8K30

    非对称加密与安全证书看这一篇就懂了 转

    公钥、私钥和证书 除算法外,非对称加密中另外两个重要的概念是公钥和私钥。公钥对外公开,任何人均可持有和使用;私钥自行保管,其安全性是通信安危的关键。...私钥和公钥的作用一般分为两种: 公钥加密,私钥解密,主要用于通信; 私钥加密(签名),公钥解密(验证),主要用于数字签名。...证书包含公钥,所以拿到证书意味着就拿到了对方的公钥。几乎所有的浏览器都会对证书进行校验,以确保网页通信中的安全。...CSR(Certificate Sign Request)、公钥、密钥和证书归属为一类。CSR 用来获取证书,包含申请人的公钥、邮件等证明身份的信息。...-nodes # 生成的tlanyan.cer文件包含了证书和公钥,对应导入前的tlanyan.crt和tnPEM . pri v.key两个文件 pem 和 jks 的格式转换太过复杂, 具体请看

    1.5K20

    技术分享 | MySQL : SSL 连接浅析

    非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。利用公钥(或私钥)加密的数据只能用相应的私钥(或公钥)才能解密。...数字证书-如何保证公钥的真实性? 如果有攻击者伪造了 Server 端的公钥并发了客户端,客户端会访问到假网站被窃取信息。...,以确信请求确实由用户发送而来); CA 对用户的所有信息(公钥、所有者、有效期...)进行 Hash 计算,得到一个 Hash 值,然后再使用私钥对 Hash 值进行加密得到签名,就得到了数字证书。...、私钥 # 使用CA私钥对服务器公钥签名,得到服务器证书 server-cert.pem,证书中包含公钥、所有者、有效期等明文信息,也有经过 CA 私钥加密对公钥、所有者、有效期...加密后的签名 openssl...使用CA私钥对客户端公钥签名,得到客户端证书 client-cert.pem,一般不需要验证客户端身份,这些文件就不需要用到。

    3.5K10

    OpenSSL - RSA非对称加密实现

    在非对称加密中,需要两对密钥,公钥和私钥。 公钥个私钥属于对立关系,一把加密后,只有另一把才可以进行解密。...公钥数据加密 数字证书内包含了公钥,在进行会话连接时,双方交换各自的公钥,保留自己的私钥。进行数据传输时,利用对方的公钥进行数据加密。加密后的数据只有对方的私钥才能进行解密。...私钥数字签名 私钥进行数据加密,所有人用公钥都能解密数据,但是加密后的数据却唯有私钥能生成。可以用于消息来源验证。...具体RSA加密算法在计算机网络中的运用方式和原理可以查看:OpenSSL - 网络安全之数据加密和数字证书 如何利用openssl命令行来生成证书和密钥可查看:OpenSSL - 利用OpenSSL自签证书和...生成密钥或读取密钥 根据需要选择签名还是加密 使用公钥进行数据加密 使用私钥进行数字签名 数据通过网络进行安全传输 对端进行解密获取明文 下面是OpenSSL的RSA加密算法对数据进行加密解密过程实现

    3.2K90

    pem 文件详解

    :存放公钥和私钥(pem 后缀的证书都是base64编码;der 后缀的证书都是二进制格式;crt .cer 后缀的文件都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der...);.pfx 主要用于windows平台,浏览器可以使用,也是包含证书和私钥,获取私钥需要密码才可以) X509文件扩展名(x509 这种证书只有公钥,不包含私钥。)...组合 在某些情况下,将多个X.509基础结构组合成单个文件是有利的。一个常见的例子是将私钥和公钥组合到同一个证书中。...其中一个文件可以包含以下任何一个:证书,私钥,公钥,签名证书,证书颁发机构(CA)和/或授权链。...服务器认证证书,中级认证证书和私钥都可以储存为PEM格式(认证证书其实就是公钥)。Apache和类似的服务器使用PEM格式证书。

    21.6K20

    如何使用RSA 对数据加解密和签名验签?一篇文章带你搞定

    考虑到一种情况:发送者S获取接收者R的公钥时,被中间人A获取到了这个公钥,通过公钥对信息加密,冒充S来给R发篡改的报文,同样R接受信息后也能够通过持有的私钥解密报文数据,接受者无法辨别数据发送者身份,存在报文非法修改风险...签名过程:发送者S同样也生成了一对秘钥,事先将公钥给到R,在发送消息之前,先用R给的公钥对报文加密,然后签名使用S自己私钥来签名,最后将加密的消息和签名一起发过去给R,接受者R在接收到发送者S发送的数据后...这样一来,发送过程信息被获取,没有R的私钥无法解密信息,即使获取到发送者S的公钥,想要仿造发送信息没有S的私钥无法签名,同理R给S回复信息时,可以通过R的公钥加密,自己的私钥生成签名,S接收到数据使用同样的方式进行解密验证身份...:2048是秘钥的长度 rsa = RSA.generate(2048, random_gen) # 获取私钥,保存到文件 private_pem = rsa.exportKey() with open...('private.pem', 'wb') as f: f.write(private_pem) # 获取公钥保存到文件 public_pem = rsa.publickey().exportKey

    5.4K10

    TOB服务部署安全模块

    值得注意的是, 使用RSA加密算法, 明文长度小于N/8, 除8的原因是bit/byte的转换 在openssl.pem文件中, 公钥.pem包含公钥指数e和模数N, 私钥.pem包含版本号,模数N...,公钥指数e,私钥指数d,素数p,q和中间数,所以公钥可以发布,私钥要求随源代码存放, 不进行发布 环境部署 安装openssl1.1, 注意版本可以不同, 但是由于openssl之前版本有重大安全风险...openssl rsa -in priv_key.pem -pubout -out pub_key.pem #从私钥提取公钥 (*)命令行利用秘钥加密/解密文件 1 2 3 4# 加密, 使用公钥.../私钥加密均可(由openssl.pem数据结构, 私钥文件包含公钥) openssl rsautl -encrypt -in file.txt -inkey pub_key.pem -pubin -out...指数和N一旦发布便可以被业务部署方得到.进一步, 被部署方得到的公钥可以解密得到AES, 从而加密配置文件可以在程序中得到.

    1.3K40
    领券