openssl 常用命令demo

RSA Private Key的结构(ASN.1)

RSAPrivateKey ::= SEQUENCE {

version Version,

modulus INTEGER, -- n

publicExponent INTEGER, -- e

privateExponent INTEGER, -- d

prime1 INTEGER, -- p

prime2 INTEGER, -- q

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

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

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

otherPrimeInfos OtherPrimeInfos OPTIONAL

}

key生成

生成私钥

openssl genrsa -out rsa_private_key.pem 2048

生成公钥

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

PEM格式是文本格式,是把key的内容base64编码而来,数据格式称为DER

key查看

查看私钥内容

openssl pkey -in privkey.pem -text -noout

得到的结果会是如上private key结构的数据。包含modulus,publicExponent,privateExponent,prime1,prime2,exponent1,exponent2,coefficient,等等信息。

查看公钥内容

openssl pkey -pubin -in pubkey.pem -text -noout

包含modulus和publicExponent部分。

查看key信息:openssl rsa -noout -text -in myserver.key

查看csr信息:openssl req -noout -text -in myserver.csr

查看证书信息:openssl x509 -noout -text -in ca.crt

查看证书:

openssl x509 -in cert.pem -text -noout

openssl x509 -in cert.cer -text -noout

openssl x509 -in cert.crt -text -noout

openssl x509 -in certificate.der -inform der -text -noout

key格式转换
PEM转DER格式

私钥: PEM --(convert)--> DER

$ openssl rsa -inform PEM -in privkey.pem -outform DER -out privkey.der

公钥: PEM --(convert)--> DER

$ openssl rsa -inform PEM -in pubkey.pem -pubin -outform DER -out pubkey.der

DER转PEM格式

私钥: DER --(convert) --> PEM

$ openssl rsa -inform DER -in privkey.der -outform PEM -out privkey.PEM

公钥: DER --(convert) --> PEM

$ openssl rsa -inform DER -in pubkey.der -pubin -outform PEM -out pubkey.PEM

MTK 平台PEM,DER相互转换工具

python pem_to_der.py pubkey.pem pubkey.der

der_to_pem.py

key数据转换

DER转为数组data:

xxd -i pubk.der

the same result:

openssl rsa -in erase_pri.pem -pubout > test_pub.pem

openssl rsa -inform PEM -in test_pub.pem -pubin -outform DER -out test_pub.der

<==>

openssl rsa -in erase_pri.pem -pubout -outform DER >test_pub2.der

MTK 平台 DER转为数组的.h文件工具

./der_extractor pubkey.der pubkey.h ANDROID_SBC

Usage\] ./der_extractor pubk.der CHIP_KEY.ini SV5_SBC \[Usage\] ./der_extractor priv.der CHIP_KEY.ini SV5_SIGN \[Usage\] ./der_extractor pubk.der oemkey.h ANDROID_SBC \[Usage\] ./der_extractor priv.der SIGNTOOL_2048_PRVK.h ANDROID_SIGN ###### 签名、验签: 用私钥给文件签名 echo "hello there" \> test.txt openssl pkeyutl -sign -in test.txt -inkey key.pem -out test.sig 用公钥验证签名 openssl pkeyutl -verify -in test.txt -sigfile test.sig -pubin -inkey pubkey.pem 用公钥恢复签名文件的内容 openssl pkeyutl -verifyrecover -in test.sig -pubin -inkey pubkey.pem 用公钥加密文件 openssl pkeyutl -encrypt -in test.txt -pubin -inkey pubkey.pem -out test.enc 用私钥解密文件 openssl pkeyutl -decrypt -in test.enc -inkey key.pem -out test.dec MTK代码中的相关工具 ../vendor/mediatek/proprietary/scripts/sign-image_v2/der_extractor/ ###### openssl kdf 校验key实例: C:\\Users\>openssl version OpenSSL 3.3.0 9 Apr 2024 (Library: OpenSSL 3.3.0 9 Apr 2024) C:\\Users\>openssl kdf -keylen 32 -kdfopt digest:SHA256 -kdfopt pass:3199265327188065 -kdfopt hexsalt:0FDBC6E7530A320B98ABE5ADA8879CE4 -kdfopt iter:30000 PBKDF2 29:6C:80:F9:CC:E5:BE:2F:E6:44:F4:6A:E3:68:DF:38:4C:4E:B3:3A:10:73:FE:05:43:B9:E5:D9:CB:04:F8:D4 对应原始数据: IMEI ITERATION SIMLOCK1_SALT SIMLOCK1_HCK SIMLOCK_CONTROL_KEY xxxxxxxxxxxxxxxx 30000 0FDBC6E7530A320B98ABE5ADA8879CE4 296C80F9CCE5BE2FE644F46AE368DF384C4EB33A1073FE0543B9E5D9CB04F8D4 3199265327188065 ###### 补充: ###### PEM 与 DER 格式 PEM 与 DER是用于存储、传输密钥和证书的标准格式,两者紧密关联,可以互相转换 DER:Distinguished Encoding Rules,可分辩编码规则。DER格式文件后缀通常为 ".der" 和 ".cer",后缀名并不会影响 DER 格式文件的解析。 PEM:Privacy-Enhanced Mail,隐私增强邮件。PEM格式文件后缀通常为".pem"、".cer"、".crt"、".key",后缀名并不会影响 PEM 格式文件的解析。 1. PEM 与 DER 关系: ASN.1 ------(序列化)------ DER ------(Base64编码)------ PEM 对 ASN.1 序列化后,就会生成一个二进制串,这个就是 DER 格式,将二进制进行 Base64 编码,再加上 PEM 格式特有的头尾两行,就生成了 PEM 格式,如RSA私钥的PEM格式如下: -----BEGIN RSA PRIVATE KEY----- base64_decode(DER二进制) -----END RSA PRIVATE KEY----- 2. PEM 与 DER 互相转换 2.1 PEM 转 DER格式 先将 PEM 文件里面首尾的 "----BEGIN xxx----" 和 "----END xxx----" 两行去掉,再将内容合并为一行(去掉换行符),最后将内容进行 Base64 解码,最后结果就是 DER 格式。 openssl 命令: openssl rsa -in rsa_private.pem -outform DER -out rsa_private.der 2.2 DER 转 PEM 格式 先将 DER 二进制内容进行 Base64 编码,再按每行 64 个字节进行切分,最后在切分后的内容前后加上 "----BEGIN xxx----" 和 "----END xxx----"。 openssl 命令: openssl rsa -inform DER -in rsa_private.der -outform PEM -out rsa_private2.pem 3. DER 和 PEM 文件内容解析 上面提到过,DER 是对 ASN.1 结构对象序列化的结果,将DER的内容解析出来就是 ASN.1 结构。 openssl rsa -inform pem -in rsa_private.pem -text -noout openssl rsa -inform der -in rsa_private.der -text -noout ###### 截图实例: ![](https://img-blog.csdnimg.cn/direct/fc0396ea11ee4ad3b5aca1dcc3c6caee.png) ![](https://img-blog.csdnimg.cn/direct/ef697d2e2d674fa690636b02d02b34ef.png)

相关推荐
艾伦~耶格尔12 分钟前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
yujkss27 分钟前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx99101329 分钟前
小程序开发APP
开发语言·人工智能·python·yolo
飞翔的佩奇1 小时前
【完整源码+数据集+部署教程】二维码与查找模式检测系统源码和数据集:改进yolo11-CSwinTransformer
python·yolo·计算机视觉·数据集·yolo11·二维码与查找模式检测
大霞上仙1 小时前
实现自学习系统,输入excel文件,能学习后进行相应回答
python·学习·excel
啊阿狸不会拉杆1 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
Caven771 小时前
【pytorch】reshape的使用
pytorch·python
无规则ai1 小时前
动手学深度学习(pytorch版):第四章节—多层感知机(5)权重衰减
人工智能·pytorch·python·深度学习
你知道网上冲浪吗2 小时前
【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
python·算法·数学建模·数值分析
钢铁男儿2 小时前
Python 正则表达式核心元字符全解析
python