如何验证由openssl创建的pycrypto签名?
|
我已经在openssl中创建了私钥/公钥,并签署了一些数据:
openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
echo \'data to sign\' > data.txt
openssl dgst -md5 < data.txt > hash
openssl rsautl -sign -inkey private.pem -keyform PEM -in hash > signature
现在在python中,我正在尝试验证以下数据:
pubKey = open(\'public.pem\').read()
data = open(\'data.txt\').read()
signature = open(\'signature\').read()
from Crypto import PublicKey
key = PublicKey.RSA.importKey(pubKey)
pub = key.publickey()
hash = MD5.new(data).hexdigest()
# here, hash is same, as contents of \'hash\' file
print pub.verify(hash, signature) # <-- here
问题是pub.verify
期望第二个参数是一个较大数量的一元列表。而且我不知道如何将文件“ 3”中的二进制数据转换为该整数。每个关于pycrypto的示例都显示从pycrypto生成的签名,而key.sign()
会以(1832273432...2340234L, )
的形式生成正确的签名。但是我不知道如何使用外部签名。
如果有必要,下面是其他信息,我不知道该如何解释:
简要技术信息:
数字签名的格式:PKCS#7“签名数据”
公钥过程:DSS
密钥长度:512 – 1024位
公开指数:2 +1
公钥格式:X.509 v3证书
MD(消息摘要)算法:MD5或RIPEMD-160 16
没有找到相关结果
已邀请:
4 个回复
芳菱挨啡
文档中:
窃誓额
蟒蛇:
经过一番阅读之后,我了解到(PKS1_PSS是应该用于创建签名的新方案(https://en.wikipedia.org/wiki/PKCS_1)。 这两个脚本都需要进行一些更改: 重击:
蟒蛇:
踩什不
姬第柔炒