PyCrypto使用安全可靠吗?

Imr*_*zad 13 python django pycrypto

我打算在项目中使用PyCrypto,我想知道PyCrypto是否安全可靠,可以使用.如何根据各种加密算法(如RSA和AES)确保PyCrypto正确加密数据?

dli*_*itz 19

这取决于.

PyCrypto的某些部分非常好.例如,Crypto.Random的API(在PyCrypto 2.1中引入)被设计得非常简单,它使用的基础算法(Fortuna)也被设计得非常简单.

其他部分只是低级加密原语的实现,所以它可以工作,但你必须知道你正在做什么才能正确使用它们.例如,Crypto.PublicKey.RSA没有实现完整的RSA PKCS#1标准(这是大多数人在谈论"RSA"时所考虑的).它只实现了基本的RSA原语(m ^ e mod n和c ^ d mod n),你仍然需要提供自己的PKCS#1实现.

确保PyCrypto正确加密数据(不读取源代码,我鼓励大家做)的最佳方法是使用标准协议和/或消息格式,并测试您的代码是否与其他实现互操作.如果您正在制作自己的消息格式(您可能不应该这样做),那么您需要非常小心地确保PyCrypto实际上正在执行您认为正在执行的所有操作.

免责声明:我是目前的PyCrypto维护者,所以我的意见不应被视为独立评论.

更新: PyCrypto v2.5及更高版本现在包含正确的RSA PKCS#1加密和签名实现.有关详细信息,请参阅Crypto.Cipher.PKCS1_OAEP和Crypto.Signature.PKCS1_PSS的API文档.

  • 当维护者自己出去回答问题时+1. (2认同)
  • 我不确定这是否是主题,但PyCrypto [不再维护](https://github.com/dlitz/pycrypto/issues/173). (2认同)

Dan*_*Dan 5

No.PyCrypto不再处于积极开发阶段,应改为使用密码学库。

来源:https : //github.com/dlitz/pycrypto/issues/173