我计划在一个项目中使用PyCrypto,我想知道PyCrypto是否足够安全和可靠。如何确保PyCrypto根据各种加密算法正确地加密数据?
发布于 2011-12-04 13:43:01
那得看情况。
PyCrypto的某些部分真的很棒。例如,用于Crypto.Random的API (在Fortuna2.1中引入)被设计成非常简单,它使用的底层算法( PyCrypto )也被设计得非常简单。
其他部分只是低级加密原语的实现,所以它是有效的,但您必须知道您正在做什么才能正确使用它们。例如,Crypto.PublicKey.RSA没有实现完整的RSA标准(这是大多数人在谈论“PKCS#1”时所想到的)。它只实现了基本的RSA原语(m^e mod n和c^d mod n),您仍然需要提供自己的PKCS#1实现。
确保PyCrypto正确加密数据的最好方法(无需阅读源代码,我鼓励每个人都这样做)是使用标准协议和/或消息格式,并测试代码与其他实现的互操作性。如果您正在创建自己的消息格式(您可能无论如何都不应该这样做),那么您需要非常小心地确保PyCrypto实际上做了您认为它正在做的所有事情。
免责声明:我现在是PyCrypto的维护者,所以我的观点不应该被认为是独立的审查。
更新: PyCrypto v2.5及更高版本现在包含适当的 PKCS#1加密和签名实施。详情请参考Crypto.Cipher.PKCS1_OAEP和Crypto.Signature.PKCS1_PSS的接口文档。
发布于 2017-01-05 21:13:12
不是的。PyCrypto不再处于活跃的开发阶段,应该改用密码库。
发布于 2011-10-21 21:38:53
请注意,我也不是加密方面的专家。也就是说,我快速浏览了github上的PyCrypto代码和他们的邮件列表。给我信心的一件事是,对代码库有良好的、专家的贡献。开发人员承认不安全,并努力纠正它们。
如果您有一个需要安全实现的特定用例,请查看他们的代码并询问他们的列表。由于它们似乎在许多情况下利用C/C++库来完成这项工作,因此您可以直接查看基库的声誉。
https://stackoverflow.com/questions/7835974
复制相似问题