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)。