exponent1 INTEGER, -- d mod (p-1)

exponent2 INTEGER, -- d mod (q-1)

coefficient INTEGER, -- (inverse of q) mod p

otherPrimeInfos OtherPrimeInfos OPTIONAL

类型RSAPrivateKey 的各域具有以下意义:

• version 是版本号,为了与本文档的今后版本兼容。本篇文档的这个版本号应该是0,如果使用了多素数,则版本号应该是1。

Version ::= INTEGER { two-prime(0), multi(1) }

(CONSTRAINED BY {-- version must be multi if otherPrimeInfos present --})

• modulus 是RSA合数模n。

• publicExponent 是RSA的公开幂e。

• privateExponent 是RSA的私有幂d。

• prime1 是n的素数因子p。

• prime2 i是n的素数因子q。

• exponent1 等于d mod (p − 1)。

• exponent2 等于d mod (q − 1)。

• coefficient 是CRT系数 q–1 mod p。

• otherPrimeInfos 按顺序包含了其它素数r3, …, ru的信息。如果version是0 ,它应该被忽略;而如果version是1,它应该至少包含OtherPrimeInfo的一个实例。

OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo

OtherPrimeInfo ::= SEQUENCE {

prime INTEGER, -- ri

exponent INTEGER, -- di

coefficient INTEGER -- ti

OtherPrimeInfo的各域具有以下意义:

• prime 是n的一个素数因子ri ,其中i ≥ 3。

• exponent 是di = d mod (ri − 1)。

• coefficient 是CRT系数 ti = (r1 · r2 · … · ri–1)–1 mod ri。

公钥语法为:

RSAPublicKey ::= SEQUENCE {

modulus INTEGER, -- n

publicExponent INTEGER -- e

类型RSAPublicKey的域具有以下意义:

• modulus 是RSA的合数模n。

• publicExponent 是RSA公开幂e。

在OpenSSL中生成RSA私钥公钥文件并解析

OpenSSL中RSA私钥文件生成命令为:

openssl genrsa -out private_rsa.pem 1024

生成RSA公钥命令为:

openssl rsa -in private_rsa.pem -pubout -out public_rsa.pem

生成的私钥pem文件内容如下:

-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQDnsN1F66mF 6h6y/XpyN+ZU/w5AyeWBjZNIqi33/ATn4qQpw+kD

HrKyF7sQ/RNw6tibM90iM6VOA14305umP bPROJJs3JoB6Lao74SUm58aO 9T+Ct7r

O52E+3r5jyDQicdRl6lIhLigNADXP D/KoNwfrRrCyw4wTHMZhSHc8eU HeQIDAQAB

AoGABVTIgqddiztL4Yp7ms02 e5Yy2cLLiSOc0/s2e5JM+pj4dg2P+wZlzjtFjqqE

HAELYubam8LcduMU8+vmlPiufoK9fo47fLsX1PFCY9 TDKL1dFlZgBAmJU7hR27h/

gCo4r3PMub/snq7n+skrbarZbX1J6Q1o5UYKFIrrI jNObEECQQD0DIzIdMObPUUu

W+JXg10kz/ayYn3irxZmp5ngc+b9WZfSOPehZBsLWsIb1eC7y9 DZMhZfBQ/sPaO8

0tvqJMUFAkEA8wlj3B3zK20p K+Hj+vFiAlaQmqILTSfv/9jMm8tbVfXt+bHrmZdN

jruGVQDb7V2pW9HeG5PgDB3v KXeOiVfC5QJAYikKFzaf1rj2 ModSqtBzjnL3Txi+

eYbjA7c19UmpBw4aOrwfHhMd rZt7p6aHFgIMps+2n9Fxbhv8194YBj1z4QJAPON W

XFg4iuGvVeoi9sSwvEs5sTP1 xt/BlgSXxlRdTpztgQgdMX6hlKf QkM1FTCOSAYoD

rj8O+5ooR+hHEoulLQJBAOtaMvMWIOG7mA RngpwqfJ07L41/T0ITHteiiYJfCurz

kLVCx1XA3MlN+u5gn7osUHMbah0Ze3uakSZ6z a3mL5Y=

-----END RSA PRIVATE KEY-----

此时文件为BASE64编码,在openssl中执行以下命令,将BASE64编码的文件装换成二进制编码:

openssl base64 -d -in private_rsa.pem -out private.pem

生成的private.pem 文件为BASE64解码后的文件,此文件是将RSA密钥语法中的结构进行DER

编码后的二进制表现形式。对其进行解析,解析结果如下:

标签头 3082025c(4 bytes) 类型为SEQUENCE 后接 604 bytes

020100 INTEGER 长度为0 内容为:VERSION

028181 INTEGER 长度为129 bytes 内容为: n(modulus)

00e7b0dd45eba985ea1eb2fd 7a7237e654ff0e40c9e5818d 9348aa2df7fc04e7e2a429c3 e9

031eb2b217bb10fd1370ead8 9b33dd2233a54e035e37d39b a63db3d138926cdc9a01e8b6 a8

ef84949b9f1a3bd4fe0adeeb 3b9d84fb7af98f20d089c751 97a94884b8a03400d73c3fca a0

dc1fad1ac2cb0e304c731985 21dcf1e50779

0203 INTEGER 长度为3 bytes 内容为: e(publicExponent)

010001

028180 INTEGER 长度为128 bytes 内容为: d(privateExponent)

0554c882a75d8b3b4be18a7b 9acd367b9632d9c2cb89239c d3fb367b924cfa98f8760d8f fb

0665ce3b458eaa841c010b62 e6da9bc2dc76e314f3ebe694 f8ae7e82bd7e8e3b7cbb17d4 f1

4263d4c328bd5d1656600409 8953b851dbb87f802a38af73 ccb9bfec9eaee7fac92b6daa d9

6d7d49e90d68e5460a148aeb 22334e6c41

0241 INTEGER 长度为65 bytes 内容为: p(prime1)

00f40c8cc874c39b3d452e5b e257835d24cff6b2627de2af 1666a799e073e6fd5997d238 f7

a1641b0b5ac21bd5e0bbcbd0 d932165f050fec3da3bcd2db ea24c505

0241 INTEGER 长度为65 bytes 内容为: q(prime2)

00f30963dc1df32b6d292be1 e3faf1620256909aa20b4d27 efffd8cc9bcb5b55f5edf9b1 eb

99974d8ebb865500dbed5da9 5bd1de1b93e00c1def29778e 8957c2e5

0240 INTEGER 长度为 64 bytes 内容为: d mod(p-1) exponent1

62290a17369fd6b8f6328752 aad0738e72f74f18be7986e3 03b735f549a9070e1a3abc1f 1e

131dad9b7ba7a68716020ca6 cfb69fd1716e1bfcd7de1806 3d73e1

0240 INTEGER 长度为 64 bytes 内容为: d mod (q-1) exponent2

3ce3565c58388ae1af55ea22 f6c4b0bc4b39b133f5c6dfc1 960497c6545d4e9ced81081d 31

7ea194a7d090cd454c239201 8a03ae3f0efb9a2847e84712 8ba52d

0241 INTEGER 长度为 65 bytes 内容为: q -1 mod p coefficient

00eb5a32f31620e1bb980467 829c2a7c9d3b2f8d7f4f4213 1ed7a289825f0aeaf390b542 c7

55c0dcc94dfaee609fba2c50 731b6a1d197b7b9a91267acd ade62f96

也可以直接使用OpenSSL命令以明文形式输出密钥的各个参数值,例如:

openssl rsa -in private_rsa.pem -text -out private.txt

然后就可以在private.txt文件中查看RSA密钥中各个参数的值

PEM 是一种常见的证书编码方式,它使用base64编码将二进制的X.509 格式 证书进行编码,再使用ASCII字符加上起始和结束标记,即 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----,加入换行符等标记符号来标识证书数据。它是一个基于ASN.1数据 格式 的证书结构,在 PEM 格式 下,通常以 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 对包含在 间的编码数据进行标识。 http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA 算法标准 定义 RSA 私钥 语法为: RSA PrivateKey ::= SEQUENCE { version Version, modulus INTEGER, -- n publicExponent INTEGER, -- e privateExponent... 大家好,我是神韵,是一个技术&生活博主。出文章目的主要是两个,一是好记忆不如烂笔头,记录总结 提高自己。注意:上面我指定了生成目录为/Users/huangzhixue/ rsa _key目录下,如果不指定默认在git的bin下面生成,因为终端定位到了bin下。1、找到安装Git目录,并通过终端进入到bin 目录下,如果不知道Git安装在哪里,可以借助Idea找到。打开对应目录,可以看到已经生成了公钥。打开对应目录,可以看到已经生成了 私钥 。4、生成公钥. pem 文件 。 首先需要将证书和 私钥 加载到内存 。可以使用函数 PEM _read_bio_X509() 和 PEM _read_bio_PrivateKey() 分别读取证书和 私钥 的数据,存储到 X509 和 EVP_PKEY 结构体 。其 cert_data 和 key_data 分别是证书和 私钥 的 BASE64 编码字符串,cert_data_len 和 key_data_len 分别是字符串的长度。使用函数 PKCS12_create() 创建 PKCS#12 对象,将证书和 私钥 绑定到该对象上。 使用 OpenSSL 生成证书1、生成 RSA 密钥的方法 openssl gen rsa -des3 -out privkey. pem 2048 这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成: openssl gen rsa -out privkey. pem 2048  建2、生成一个证书请求建议用2048位密钥,少于此可 生成步骤就不写了,自行百度。工作 要使用 RSA 2048公 私钥 做签名校验,使用 openssl 工具生成公 私钥 对,在导出数据时候发现 私钥 参数长度显示不对(或许是我搞错了),具体记录如下:Private-Key: (2048 bit)modulus:(n标准长度256B,实际输出257B,多了个00标红)    00:d8:8b:57:87:80:31:e3:c5:69:c3:14:77:ae:5e:  ... 在 Openssl 库生成数字证书总结(适配win2000)一文 我们已经实现了crt后缀证书的生成,现在说一下怎么生成 pem 后缀的证书。大体思路很简单,就是使用 OpenSSL 生成一个CA根证书,并用这个根证书颁发两个子证书server和client。下面就来说一下实现的具体步骤: 一、命令行进入 openssl 的out32dll路径下,新建一个private 文件 夹用于放置我们生成的各种证书 文件 。 二、生成根证书 1、生成根证书 私钥 -- ... 与手动从网站收集数据相比,爬虫可以为我们节省很多时间,对于爬虫的每次请求而言,这相当于 AWS Lambda 的每次函数的运行。AWS Lambda 是一种将脚本部署到云的简单且价格低廉的服务,如果我们要实现在 AWS Lambda 上运行 selenium 实现数据的爬取,我们需要解决如何在 AWS Lambda 函数 安装 Chrome 浏览器?同时,AWS Lambda 的主要限制是超时限制,即 15 分钟,部署包不能超过 250 MB(但使用容器最多可接受10 GB)。