Python相当于PHP中的mcrypt_create_iv

时间:2016-01-28 11:11:12

标签: php python encryption

基本上我正在将PHP CodeIgniter的加密方法转换为Python,但我在将PHP的mcrypt_create_iv库转换为Python时陷入困境。

先谢谢。

1 个答案:

答案 0 :(得分:5)

mcrypt_create_iv()只是操作系统级伪随机生成器的PHP接口(它甚至不是libmcrypt的一部分,与函数名称的含义相反)。

Python通过os module提供此类接口,您需要的是os.urandom()

例如,如果您需要将mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)翻译成Python,则需要编写os.urandom(16)

澄清可能的混淆:

您可能在PHP中使用过MCRYPT_DEV_RANDOMMCRYPT_RAND,但实际上没有理由使用其中任何一个而不是MCRYPT_DEV_URANDOM - 所有可衡量的标准都更好:

  • MCRYPT_RAND特别不适合加密目的,换句话说 - 它是不安全
  • MCRYPT_DEV_RANDOM可以阻止,直到新的熵数据可用。您不希望在Web应用程序中进行阻止以及/dev/random/dev/urandom更好,因为阻止已经debunked

MCRYPT_DEV_URANDOM非阻塞且安全。