我使用 Elite EL SDK Basic v3.3.2.0 工具创建了一对公钥/私钥RSA密钥。 (您可以在资源标签下找到它here。它是免费的)
现在,我想检查这对RSA密钥的正确性。据我所知,我可以使用下面的命令从私钥创建一个公钥,然后比较两个公钥是否相等(前一个公钥和这个新的公开密钥):
> openssl rsa -in <MyPrivateKey> -out <AnAddressForOutput> -pubout
首先,我使用this在线工具将我的私钥格式转换为 base64 。
然后我运行命令命令,但收到以下错误:
我看了一下private.txt,这是它的内容:
8kP5IpV/oROe6Sb8q5GypqmDCJToHlc2Xbi/sui6/VHu4kaD9pZNJlwP0HVTjyMuQLySzDhPtP8n
xlZeG6jZZPxCMc7na0M+O67z0p5AKoxjELkp4ajiVdjTp0oAYFdkRM782ThA5Hvh+rnt6n++RCZx
HMqa+/dzgG/ONUbI/EMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAc2koT+YAyRpkUR70ZKZNDqAPTf1nirTANUBU8e8
Aa2x9MKh9LZF0usyzkG2td0UkdhluX4cdpw+0jZrbaqw4wZMxpWFyJtzMQtz5lAP0+V8CjR4NIRE
1NPl3ofIqOL9OVp5lW7FkuRwrdhBPhvcmRPpZDZwbBPd1LJ/G/dl0r9B+nn+reo8eKg9XZuk49/c
/w3Gnv2mwMjc/x5wrZ6t48N5xOsZ4oEbAaO0UiUyolEoso4jdp0zrI64cDiXcV3LMfebn/9SRjJ7
3HsQ1PxSFiC9kukafhGcuOLmfclbW3xXpyi8grcIkc529x65QptitGpcOUzDmsybiXXZdFXWObM8
qFSLy4Dve1a5F5s78Be10KE8GZNLdplGUxnYgef8k3cmwASZvMhMgleF2SpE8sCXVSKzc+hyrnFu
A9ZxBtTRw6xxmWUcYmLtzzdzCV+ZaxBFW/96p1Jx7aX2u7x9pNrkF9Y5eonEKCRtkBMZpxAuwWrW
QWrHF3DHBaHuRLNB7z5m+wO716SESJh0TpJA6zBULFkRmG+2F7sHY8hAKgrBvw64iYT8ZkOL4QLT
P0j+qLwh7NCCdj5l8AS7jsN33SU=
据我所知,每个公钥/私钥必须有以下两行:
-----开始RSA私钥-----
私钥数据
----- END RSA私钥-----
-----开始RSA公共密钥-----
私钥数据
----- END RSA PUBLIC KEY -----
这是否意味着我的工具(Elite EL SDK Basic)不能正常工作?或者我在上述某个步骤中出错了?
仅供参考:这是使用Elite EL SDK Basic生成的公钥的base64视图:
8kP5IpV/oROe6Sb8q5GypqmDCJToHlc2Xbi/sui6/VHu4kaD9pZNJlwP0HVTjyMuQLySzDhPtP8n
xlZeG6jZZPxCMc7na0M+O67z0p5AKoxjELkp4ajiVdjTp0oAYFdkRM782ThA5Hvh+rnt6n++RCZx
HMqa+/dzgG/ONUbI/EMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQ==
答案 0 :(得分:1)
您的密钥采用专有格式。格式很简单:
OpenSSL不会读取这些私钥。您需要以其他方式验证密钥,或者从中创建OpenSSL兼容密钥。
使用import java.security.spec.RSAPrivateCrtKeySpec
和import org.bouncycastle.openssl.jcajce.JcaPEMWriter
的密钥预告片:
$ openssl rsa -check -in somekey.pkcs8.pem
RSA key ok
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDyQ/kilX+hE57pJvyrkbKmqYMIlOgeVzZduL+y6Lr9Ue7iRoP2
lk0mXA/QdVOPIy5AvJLMOE+0/yfGVl4bqNlk/EIxzudrQz47rvPSnkAqjGMQuSnh
qOJV2NOnSgBgV2REzvzZOEDke+H6ue3qf75EJnEcypr793OAb841Rsj8QwIDAQAB
AoGBAM2koT+YAyRpkUR70ZKZNDqAPTf1nirTANUBU8e8Aa2x9MKh9LZF0usyzkG2
td0UkdhluX4cdpw+0jZrbaqw4wZMxpWFyJtzMQtz5lAP0+V8CjR4NIRE1NPl3ofI
qOL9OVp5lW7FkuRwrdhBPhvcmRPpZDZwbBPd1LJ/G/dl0r9BAkEA+nn+reo8eKg9
XZuk49/c/w3Gnv2mwMjc/x5wrZ6t48N5xOsZ4oEbAaO0UiUyolEoso4jdp0zrI64
cDiXcV3LMQJBAPebn/9SRjJ73HsQ1PxSFiC9kukafhGcuOLmfclbW3xXpyi8grcI
kc529x65QptitGpcOUzDmsybiXXZdFXWObMCQDyoVIvLgO97VrkXmzvwF7XQoTwZ
k0t2mUZTGdiB5/yTdybABJm8yEyCV4XZKkTywJdVIrNz6HKucW4D1nEG1NECQQDD
rHGZZRxiYu3PN3MJX5lrEEVb/3qnUnHtpfa7vH2k2uQX1jl6icQoJG2QExmnEC7B
atZBascXcMcFoe5Es0HvAkA+ZvsDu9ekhEiYdE6SQOswVCxZEZhvthe7B2PIQCoK
wb8OuImE/GZDi+EC0z9I/qi8IezQgnY+ZfAEu47Dd90l
-----END RSA PRIVATE KEY-----
要测试PKCS#8格式的私钥,最好的方法是使用-inform DER
而不是转换为base 64。
Base64只是PEM格式的一部分。它也可能需要标题。有时键也可以连接在一起。如果要使用PEM验证私钥,则需要自己添加标题。
另请注意,OpenSSL已经内置了转换例程和base64编码,即使在命令行中也是如此。
作为旁注,我不明白为什么要检查单个程序输出的正确性。如果您确实想要测试正确性,可以考虑使用公钥和私钥执行签名/验证或加密/解密。