我需要进行数字签名使用存储在一个文件中。质子交换膜的私钥在python一些文本。好像M2Crypto是做,这些天,所以这是我使用什么样的首选方式。我觉得我得到的大部分,但我感到困惑如何配置填充。具体而言,我需要验证在iPhone应用程序签名,使用被称为kSecPaddingPKCS1SHA1和描述像这样的填充方案:

  

要签名的数据是一个SHA1哈希。   标准ASN.1填充将被完成,以及作为底层RSA操作PKCS1填充。

由于不是一个加密专家,我只有一个模糊的知道这意味着什么。我试着看一些RFC的,但发现他们坚不可摧。我看到RSA对象的加密/解密方法需要填充的类型,但我没有看到任何类似相关的签名验证。

任何帮助,特别是与代码,将不胜感激。

(在某种意义上,这是的逆这个问题。)


确定,下面给出的回答是正确的AFAICT。下面的代码text,使用kSecPaddingPKCS1SHA1填充方案在iPhone上验证生成签名。

from M2Crypto import EVP
privkey = EVP.load_key("privkey.pem")
privkey.sign_init()
privkey.sign_update(text)
signature = privkey.sign_final()

(对不起editorialize,但我只想说,密码黑客是一些在宇宙中最蹩脚文档作家?)

有帮助吗?

解决方案

AFAIK M2Crypto增加在那里的要求的填充。

PKCS1填充是默认的。

但是,(再次仅据我所知),签名不具有填充,填充仅添加到加密的数据,以防止可能的攻击。结果 编辑:用户CAF,在注释中说,填充是essnetial一个良好的签名。我还是建议你用默认M2Crypto行为尝试它,它可能会增加它。

在M2Crypto的生成文档你可以看到,{公共,私有} _ {加密,解密}方法具有填充选项,这是PKCS1默认,而符号menthod现在没有。

IMO只是给它一个镜头使用默认M2Crypto PARAMS,它可能会工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top