我需要使用存储在 .pem 文件中的私钥在 python 中对一些文本进行数字签名。如今,M2Crypto 似乎是这样做的首选方式,所以这就是我正在使用的方式。我想我得到了大部分,但我对如何配置填充感到困惑。具体来说,我需要验证 iPhone 应用程序中的签名,使用如下调用kSecPaddingPKCS1SHA1
和描述的填充方案:
要签名的数据是 SHA1 哈希。将完成标准 ASN.1 填充,以及底层 RSA 操作的 PKCS1 填充。
不是加密专家,我对这意味着什么只有一个模糊的概念。我试图查看一些 RFC,但发现它们难以理解。我看到 RSA 对象的加密/解密方法采用填充类型,但我没有看到与签名验证相关的任何类似内容。
任何帮助,尤其是代码方面的帮助,将不胜感激。
(在某种意义上,这是这个问题的反面。)
好的,下面给出的答案是正确的 AFAICT。以下代码使用填充方案为text
在 iPhone 上验证生成一个签名。kSecPaddingPKCS1SHA1
from M2Crypto import EVP
privkey = EVP.load_key("privkey.pem")
privkey.sign_init()
privkey.sign_update(text)
signature = privkey.sign_final()
(抱歉发表社论,但我可以说加密黑客是宇宙中最糟糕的文档作者吗?)