相关疑难解决方法(0)

推荐的Python加密模块?

我一直在探索Python可用的加密模块,我发现3:ezPyCrypt,yawPyCrypt和KeyCzar(它实际上支持几种语言,但Python包含在其中).前两个依赖于PyCrypto模块.

我缺少选择吗?是否有一个明确的领跑者的轻松和功能,还是只是降低到一个舒适的方式?

我目前倾向于KeyCzar,ezPyCrypt紧随其后.

我将使用该库进行数字签名签名和验证,并可能用于密钥创建(尽管如果我必须为此功能调用其他内容,我不会哭).

我正在使用Python 3.x并可以访问GPG.

python cryptography

31
推荐指数
4
解决办法
2万
查看次数

openSSL rsautl和dgst之间的区别

以下命令为输入文件生成签名:

openssl dgst -sha1 -sign privateKey.pem -out signature1 someInputFile
Run Code Online (Sandbox Code Playgroud)

以下命令还会为输入文件生成签名:

openssl dgst -binary -sha1 someInputFile > digest
openssl rsautl -sign -in digest -inkey privateKey.pem -out signature2
Run Code Online (Sandbox Code Playgroud)

据我所知,他们都应该创建文件的SHA1摘要的RSA签名.但它们不会生成相同的签名.

结果,用方法2生成的签名也不能通过openssl dgst -verify调用来验证.

有人知道区别是什么,以及如何克服这种差异?

openssl digital-signature

21
推荐指数
1
解决办法
2万
查看次数

尝试使用Python验证SHA1消息签名.我究竟做错了什么?

我试图通过从网站下载证书并提取其公钥来验证消息的SHA1签名.在SO(这里这里)的其他地方有一些示例代码,但是我还没弄清楚我做错了什么.

import requests
from M2Crypto import BIO, RSA, EVP, X509

def verify_message(cert_url, msg, sig):
    cert_text = requests.get(cert_url, verify=True)
    cert = X509.load_cert_string(cert_text.content)
    pubkey = cert.get_pubkey()
    sig = sig.decode('base64')

    # Write a few files to disk for debugging purposes
    f = open("sig", "wb")
    f.write(sig)
    f.close()

    f = open("msg", "w")
    f.write(msg)
    f.close()

    f = open("mypubkey.pem", "w")
    f.write(pubkey.get_rsa().as_pem())
    f.close()

    pubkey.reset_context(md='sha1')
    pubkey.verify_init()
    pubkey.verify_update(msg)
    assert pubkey.verify_final(sig) == 1
Run Code Online (Sandbox Code Playgroud)

这给了我以下断言错误:

  File "/tmp/test.py", line 71, in verify_message
    assert pubkey.verify_final(sig) == 1
AssertionError
Run Code Online (Sandbox Code Playgroud)

但是,如果我openssl …

python cryptography m2crypto

11
推荐指数
1
解决办法
1179
查看次数