Python开源加密工具包

时间:2012-03-19 21:11:00

标签: python encryption cryptography toolkit

我的任务是在2人和中间人之间建立安全的沟通。 消息必须使用公钥和私钥加密,并且应为每个用户创建X.509证书,该证书由第三方存储。 我目前正在通过套接字在用户之间发送消息。

有人可以建议一个易于理解的库,我可以使用它来执行简单的加密吗?关于图书馆的任何适当的阅读资源也会有所帮助。

5 个答案:

答案 0 :(得分:3)

ssl:http://docs.python.org/dev/library/ssl.html

ssl.wrap_socket会将加密层添加到普通套接字中。

this相关问题的答案中有一些代码示例:

client, addr = listeningSocket.accept()
client.recv(32)
client.send(b'hello')
client.setblocking(0)

while True:
    try:
        client.do_handshake()
        break
    except ssl.SSLError, err:
        if err.args[0] == ssl.SSL_ERROR_WANT_READ:
            select.select([client], [], [])
        elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE:
            select.select([], [client], [])
        else:
            raise

sslSocket = ssl.wrap_socket(client, do_handshake_on_connect=False, keyfile='key.pem', certfile='cert.pem', server_side=True, ssl_version=ssl.PROTOCOL_TLSv1)
sslSocket.write(b'hello')

答案 1 :(得分:2)

回应CppLearner的回复,如果您不介意缺少x509证书支持或自己添加,请按照c harm crypto的方式进行操作。来源是here形式(下面的代码中导入可能有误,但链接代码确实有效)

from pkenc_adapt_hybrid import HybridEnc
from toolbox.eccurve import prime192v1
from schemes.pkenc_elgamal85 import * 
from toolbox.PKEnc import PKEnc

pkenc = ElGamal(ecc, prime192v1)
hyenc = HybridEnc(pkenc)

(pk, sk) = hyenc.keygen()

m = 'this is a new message'
cipher = hyenc.encrypt(pk, m)
orig_m = hyenc.decrypt(pk, sk, cipher)

答案 2 :(得分:0)

我们使用pycrypto作为我们正在开发的产品(Versile Python,开源)的主要支持第三方加密子系统。 Versile Python增加了对X.509证书的支持,请参阅此example。您还可以从平台的API访问某些功能,请参阅crypto doc

答案 3 :(得分:0)

答案 4 :(得分:0)

我在尝试PyOpenSSL后最终使用了M2Crypto PyOpenSSL的问题在于它没有返回公钥的方法。我遇到了很多问题。 M2Crypto也有自己的加密方法,这意味着你不需要安装多个库:)