擅长:python、mysql、java
<p>EVP_PKEY_new的文档直接声明其用于存储私钥。从x509开始我就迷失了原来的海报foo.get_pubkey网站()只返回一个PKey执行副总裁实例,并将实例存储为pem显示私钥。我不能假装知道M2Crypto团队的意图,因为许多使用PKey的函数都没有文档记录。例如,一个x509请求对象有一个verify(self,pkey),但却没有告诉我pkey是什么类型的对象。同样的,或者任何文件。我和原作者一样困惑,因为我认为RSA至少有nn个术语
(e,n)#公钥
(d,n)#私钥</p>
<p>充其量我想到的是私钥
(d,n,p,q,dp,dq,qinv,t)式中
p和q是大素数dp和dq以及qinv是要做的额外系数
解密速度更快,t作为tolient函数。在</p>
<p>之所以应该在文档中明确区分,是因为有时您希望使用私钥(在签名的情况下)进行加密,以便其他每个人都可以通过使用公钥来进行验证。
h=散列值(m)
sig=h^d(模式n)
只有知道d(私钥)的人才能创建签名。
验证由</p>
<p>h=信号(模式n)</p>
<p>如果这两个哈希匹配,您就知道消息是真实的。在</p>
<p>我的问题是Pkey执行副总裁声称代表一个公钥了吗
它的assign_rsa()方法声明它接受一个rsa密钥对(“我假设这意味着此时的私钥”。到目前为止,我发现的任何例子都只是为了创建一个自我认证的证书(包括M2Crypto自己的单元测试)。我没有看到任何测试会像我们在现实中看到的那样,接受第三方x509请求并用自己的ca证书和密钥对其进行签名。由于X509请求不包含私钥,因此单元测试无法帮助我弄清楚如何对通用csr进行签名。然而,单元测试示例运行良好,因为它是自签名的,并且签名者已经可以访问私钥。事实上,test-mkcert测试确实使用mkreq方法返回的私钥
生成x509请求。在</p>
<p>M2Crypto文档很混乱,因为它们使用这些术语
pk,pkey甚至pubkey可以互换。在</p>