Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openssl 用于将RSA私钥导出到RSAPublicKey的命令行工具_Openssl_Rsa - Fatal编程技术网

Openssl 用于将RSA私钥导出到RSAPublicKey的命令行工具

Openssl 用于将RSA私钥导出到RSAPublicKey的命令行工具,openssl,rsa,Openssl,Rsa,今天我发现有两种公钥格式带有PEM格式头,例如 X.509 SubjectPublicKeyInfo** (PEM header: BEGIN PUBLIC KEY) 对应于短标题形式 -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzsQ7MkLsc1lJ8S2WtItN cfj7pbdB6PVcRHEEjbie97Rqthkr6h2WE5rVj0BZNwFjs4NIUYws2KeQjexZ8NEY

今天我发现有两种公钥格式带有PEM格式头,例如

X.509 SubjectPublicKeyInfo** (PEM header: BEGIN PUBLIC KEY)
对应于短标题形式

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzsQ7MkLsc1lJ8S2WtItN
cfj7pbdB6PVcRHEEjbie97Rqthkr6h2WE5rVj0BZNwFjs4NIUYws2KeQjexZ8NEY
qpcP9iPMjdNgLpU8uL03QMti+y+y0IU4493KxKxjprjtu6no0/O5TwNs+/r+7hmF
/8d+2mhyLJQbtuvQQ6mvg6roCMuqzRS91SObzT1ojCjY+AbUrmVZ5jmklHCv7uah
EoTsB3S7wHCBRmelh2j5fWrRBay4h0IB/NSrt1dO/UEVmDSWGjnG+RsDMhYGZXJ1
hJawhqrbuVRZvrMyzqQ0j1xy5buS6jqSHA3wdOixdI8dDpvBnUDGqEIU6gl2Am7h
pwIDAQAB
-----END PUBLIC KEY-----

对应于较长的形式

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA1+skaD+II3MYF/0iGDcFX/E6b0XzSC8I2RapRaCL84EqY8HxWGKn
+7p34ZJwZx9avX0cCUqvTmS6LtuoSGrdLlahrz1qEnkdYqlo9HXXQiKtA9iwaiId
LxPtCnJnGMOMtolwKAJpsr+l68D41mWvvibrwPbeTJsFi0zvrN0rL1YbVYvw3X85
fQm+wgo3s8I5sOWwlkADvfD37KxteEPitfb2cvGfYo+VIhBqqXQUhQSC3jBAUc5o
+P8U3eu84ln2YqiIg9P/iM99HoKFECJ2+mxWM8oz0rS8oqthVOck+KZ7mBiYjEzW
3ytTJIUpX9Sl88oDqkz7Azku/GVEiJNWSQIDAQAB
-----END RSA PUBLIC KEY-----
我想用后一种格式验证一些公钥,但是我看不出openssl命令行工具显然可以做到这一点-pubout导出第一种格式,pubin格式拒绝第二种标头

#openssl rsa -pubin -in rsa.pub -modulus -noout

unable to load Public Key
140154809448256:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: PUBLIC KEY

关于openssl的正确命令是什么,或者是否有某种工具可以从命令行执行此操作,有什么建议吗?

我认为openssl命令行程序(rsa)无法读取PKCS#1格式。如前所述,PKCS#1和PKCS#8格式之间的区别在于算法标识符。RSA加密的算法标识符为“1.2.840.113549.1.1.1”,Base64版本为“Miibijanbgkqhkig9w0Baqefaocaq8a”,您可以安全地使用RSA公钥的Base64作为前缀,并将页眉/页脚从“开始RSA公钥”/“结束RSA公钥”更改为“开始公钥”/“结束公钥”.openssl命令行程序可以读取PKCS#1格式

如果你使用

openssl rsa -RSAPublicKey_in <inputFile> -pubout -out <outputFile>
openssl rsa-RSAPublicKey\u in-pubout-out

它将从426字节长的rsa公钥生成451字节长的公钥。

仅限于1.0.0版以上(2010年首次发布,2012年仍然相当罕见,现在相当普遍)。为了回答确切的问题,
rsa-in-privkey-RSAPublicKey_out
写入了“遗留”形式。该前缀仅适用于具有2048位模的密钥,该模在2012年较为常见,2018年较为普遍,但也有例外,3个八位组的指数如“F4”=第四个费马素数=65537,这是相当普遍但不是普遍的。另一个问题是在一年后提出的,所以如果有什么。。。那是这个的复制品。他们的要求也略有不同。可能是重复的
openssl rsa -RSAPublicKey_in <inputFile> -pubout -out <outputFile>