hew*_*own 31 python cryptography
我一直在探索Python可用的加密模块,我发现3:ezPyCrypt,yawPyCrypt和KeyCzar(它实际上支持几种语言,但Python包含在其中).前两个依赖于PyCrypto模块.
我缺少选择吗?是否有一个明确的领跑者的轻松和功能,还是只是降低到一个舒适的方式?
我目前倾向于KeyCzar,ezPyCrypt紧随其后.
我将使用该库进行数字签名签名和验证,并可能用于密钥创建(尽管如果我必须为此功能调用其他内容,我不会哭).
我正在使用Python 3.x并可以访问GPG.
Ayr*_*yrx 21
一个新的Python加密库已经快速发展了几个月了.0.2.1版本刚刚发布了几天前.
https://cryptography.io/en/latest/
它主要是围绕现有C库(如OpenSSL)的CFFI包装器.它作为纯python模块发布,支持CPython版本2.6 - 3.3以及PyPy.它也是重构的pyOpenSSL包的上游.
它的目的是揭示高级"配方",使密码学尽可能具有愚蠢性,以及只应谨慎使用的原语.对称算法(包括AES-GCM)得到了很好的支持,RSA和DSA等非对称算法应该会在接下来的几个版本中出现.支持的其他值得注意的算法包括PBKDF2,HKDF,HOTP和TOTP.
Vin*_*jip 13
如果你是其中包含的GnuPG和Python> = 2.4的环境中,那么你也可以考虑一个工具,如蟒蛇,GnuPG的.(免责声明:我是这个项目的维护者.)它将繁重的工作留给了gpg
并提供了一个相当简单的API.
API概述:
>>> import gnupg >>> gpg = gnupg.GPG(gnupghome='/path/to/keyring/directory') >>> gpg.list_keys() [{ ... 'fingerprint': 'F819EE7705497D73E3CCEE65197D5DAC68F1AAB2', 'keyid': '197D5DAC68F1AAB2', 'length': '1024', 'type': 'pub', 'uids': ['', 'Gary Gross (A test user) ']}, { ... 'fingerprint': '37F24DD4B918CC264D4F31D60C5FEFA7A921FC4A', 'keyid': '0C5FEFA7A921FC4A', 'length': '1024', ... 'uids': ['', 'Danny Davis (A test user) ']}] >>> encrypted = gpg.encrypt("Hello, world!", ['0C5FEFA7A921FC4A']) >>> str(encrypted) '-----BEGIN PGP MESSAGE-----\nVersion: GnuPG v1.4.9 (GNU/Linux)\n \nhQIOA/6NHMDTXUwcEAf ... -----END PGP MESSAGE-----\n' >>> decrypted = gpg.decrypt(str(encrypted), passphrase='secret') >>> str(decrypted) 'Hello, world!' >>> signed = gpg.sign("Goodbye, world!", passphrase='secret') >>> verified = verified = gpg.verify(str(signed)) >>> print "Verified" if verified else "Not verified" 'Verified'
pycrypt实际上是一个简单的AES加密/解密模块,构建在pycrypto之上,就像你提到的其他模块一样 - 注意后者正在转换到pycrypto.org URL,因为它正在改变维护者,稳定的版本和文档仍然是原作者的网站.除了你提到的更容易使用的包装器之外,pycrypto的一个优点是它的纯python 子集是由Google的App Engine提供的,所以如果你想在那里部署任何代码,那么熟悉它会很有用.
主要的替代方案(另一个强大而复杂的项目,如pycrypto)是pyopenssl,这是一个相当规则的包装(一个"薄包装",如作者所描述的)OpenSSL(如果你习惯于编码,这可能是一个加号在C中调用OpenSSL).egenix分发了一个完整的替代包装(附带所需的库),并且可能在法律上更安全(不包括存在专利纠纷或疑问的部分).
两个主要项目(pycrypto和pyopenssl)经历了或多或少的不活动,因为原始作者继续其他事情,但两者都积极开发和维护,这始终是一个好兆头.
我不知道在pyopenssl之上易于使用的包装器(很可能是,但它们没有像pycrypto那样被公开)所以,如果看起来你似乎关心易用性和不想自己写包装,pycrypto之上的包装似乎是更好的选择.
归档时间: |
|
查看次数: |
24634 次 |
最近记录: |