学习了那么长时间以来,最牛的加密解密页面的,太强了,站长破解加密代码,病毒代码解密常备代码,本站将把在线工具给整理下,方便大家的使用,下面话不多说了,来一起看看详细的介绍吧。
我想帮助解释一下这里发生了什么。
RSA "公钥" 由两个数字组成:
以RSA公钥为例,这两个数字是:
那么问题就变成了我们如何将这些数字存储在计算机中。首先我们将两者都转换为十六进制:
RSA首先发明了一种格式:
他们选择使用ASN.1二进制编码标准的DER风格来表示两个数字:
ASN.1中的最终二进制编码是:
如果然后将所有这些字节一起运行并对其进行Base64编码,则得到:
然后RSA实验室说添加标题和预告片:
之后,出现了其他形式的公钥加密:
当创建一个如何表示那些加密算法参数的标准时,人们采用了很多与RSA最初定义相同的想法:
他们决定包含要遵循的对象标识符(OID)。对于RSA公钥,即:
因此,对于RSA公钥,它本质上是:
这给你一个ASN.1:
ASN.1中的最终二进制编码是:
和以前一样,你接受所有这些字节,Base64对它们进行编码,最后得到你的第二个例子:
添加略有不同的标题和预告片,您将获得:
现在您知道编码不是魔术,您可以编写解析RSA模数和指数所需的所有部分。或者您可以认识到前24个字节只是在原始PKCS#1标准之上添加了新内容
由于财富和好运的非凡巧合:
24个字节恰好与完全对应32个base64编码字符
这意味着如果您使用第二个X.509公钥,并将前32个字符分开:
我发现这个网站是对不同格式的一个很好的技术解释:
如果你只想用命令行转换它们,“openssl rsa”对此有好处。
虽然上面关于32字节标题,OID格式等的评论很有意思,但我个人并没有看到相同的行为,假设我明白了。我认为在大多数人认为过多的细节中进一步探讨这一点可能会有所帮助。没有什么能超过过剩。
首先,我创建了一个RSA私钥,并检查了它:
(哦,恐怖!我暴露了私钥。嗯......)
它发生了另一个公钥输出参数(如前面的评论中所述)。我使用该关键字提取并显示公钥:
好吧,好吧。这两个公钥值不尽相同,但它们来自同一个私钥。或者他们是一样的吗?我将两个公钥字符串剪切并粘贴到它们自己的文件中,然后对每个公钥进行模数检查:
'pubin'告诉rsa这个 应该是公钥,并且不要抱怨它不是私钥。
现在我们使用RSA公钥,显示模数,并将其转换为普通的“公钥”(同样,我们必须告诉它输入是公钥):
显示相同的模数和相同的“公钥”值。为了让事情变得更有趣(无论如何),当我们使用 RSAPublicKey_out 关键字时,我们得到:
...当我们将普通的旧“公钥”变换为RSA公钥时:
......坚持不懈地前进,尽管我们之前只是做了几个命令,为了说明问题,我们将事情翻转过来,以便将变形从RSA变为普通的“公钥”:
......这让我们回到了我们开始的地方。我们学到了什么?
总结:内部的键是相同的,它们看起来不同。早先的评论指出RSA密钥格式是在PKCS#1中定义的,普通的旧“公钥”格式是在PKCS#8中定义的。但是,编辑一个表单不会将其转换为另一个表单。希望我现在已经把这种区别打败了。
如果仍然有生命的火花,那么让我们再说一遍,并参考最初用RSA私钥生成的证书,检查其公钥和模数:
......并且他们从此过上幸福的生活:证书具有与RSA公钥,RSA私钥和普通旧“公钥”相同的模数值。证书包含我们之前看到的相同的普通旧“公钥”值,尽管它是使用标记为RSA私钥的文件签名的。可以肯定地说有一致意见。
在OpenSSL galaxy的X509象限中没有'RSAPublicKey_out'等效关键字,所以我们不能尝试,尽管模数值被描述为“RSA密钥模数”,我认为它与我们一样接近得到。
我不知道如何使用DSA签名证书。
我意识到这不能回答原始问题,但也许它提供了一些有用的背景。如果没有,我的道歉。至少,不做的事情和不做的假设。
毫无疑问,人们已经注意到“写RSA密钥”时略微恼人的重复,当它没有做任何这样的事情时。我假设rsa模块将普通旧公钥识别为真正的RSA密钥,这就是为什么它一直坚持“RSA密钥”(加上它毕竟是rsa模块)。如果我没记错的话,通用的EVP_PKEY结构有一个所有键类型的联合,每个键类型都有自己特殊的值集(有用地命名为g,w,q和其他辅音)。
总之,我注意到有关编程和投诉的投诉。发展;现在,每个OpenSSL命令显然都有相应的代码,如果想要探索今天OpenSSL编程的所有奇迹,命令行似乎是一个合理的起点。在这种特殊情况下(因为我现在使用的是最近的cygwin),可以先查看\ openssl-1.0.2f \ apps \ rsa.c和(给出一个对宏的容忍度很高)\ openssl-1.0。 2F \加密\ PEM \
额外字符串对应于的算法标识符。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。