Mcrypt 密码

以下是 mcrypt 扩展当前支持的密码列表。有关支持密码的完整列表,请参阅 mcrypt.h 末尾的定义。使用 mcrypt-2.2.x API 的一般规则是,您可以使用 MCRYPT_ciphername 从 PHP 访问密码。使用 libmcrypt-2.4.x 和 libmcrypt-2.5.x API,这些常量也适用,但可以使用 mcrypt_module_open() 函数以字符串形式指定密码名称。

  • MCRYPT_3DES
  • MCRYPT_ARCFOUR_IV (仅限 libmcrypt > 2.4.x)
  • MCRYPT_ARCFOUR (仅限 libmcrypt > 2.4.x)
  • MCRYPT_BLOWFISH
  • MCRYPT_CAST_128
  • MCRYPT_CAST_256
  • MCRYPT_CRYPT
  • MCRYPT_DES
  • MCRYPT_DES_COMPAT (仅限 libmcrypt 2.2.x)
  • MCRYPT_ENIGMA (仅限 libmcrypt > 2.4.x,MCRYPT_CRYPT 的别名)
  • MCRYPT_GOST
  • MCRYPT_IDEA (非免费)
  • MCRYPT_LOKI97 (仅限 libmcrypt > 2.4.x)
  • MCRYPT_MARS (仅限 libmcrypt > 2.4.x,非免费)
  • MCRYPT_PANAMA (仅限 libmcrypt > 2.4.x)
  • MCRYPT_RIJNDAEL_128 (仅限 libmcrypt > 2.4.x)
  • MCRYPT_RIJNDAEL_192 (仅限 libmcrypt > 2.4.x)
  • MCRYPT_RIJNDAEL_256 (仅限 libmcrypt > 2.4.x)
  • MCRYPT_RC2
  • MCRYPT_RC4 (仅限 libmcrypt 2.2.x)
  • MCRYPT_RC6 (仅限 libmcrypt > 2.4.x)
  • MCRYPT_RC6_128 (仅限 libmcrypt 2.2.x)
  • MCRYPT_RC6_192 (仅限 libmcrypt 2.2.x)
  • MCRYPT_RC6_256 (仅限 libmcrypt 2.2.x)
  • MCRYPT_SAFER64
  • MCRYPT_SAFER128
  • MCRYPT_SAFERPLUS (仅限 libmcrypt > 2.4.x)
  • MCRYPT_SERPENT(仅限 libmcrypt > 2.4.x)
  • MCRYPT_SERPENT_128 (仅限 libmcrypt 2.2.x)
  • MCRYPT_SERPENT_192 (仅限 libmcrypt 2.2.x)
  • MCRYPT_SERPENT_256 (仅限 libmcrypt 2.2.x)
  • MCRYPT_SKIPJACK (仅限 libmcrypt > 2.4.x)
  • MCRYPT_TEAN (仅限 libmcrypt 2.2.x)
  • MCRYPT_THREEWAY
  • MCRYPT_TRIPLEDES (仅限 libmcrypt > 2.4.x)
  • MCRYPT_TWOFISH (适用于旧版 mcrypt 2.x 版本或 mcrypt > 2.4.x )
  • MCRYPT_TWOFISH128 (TWOFISHxxx 在较新的 2.x 版本中可用,但在 2.4.x 版本中不可用)
  • MCRYPT_TWOFISH192
  • MCRYPT_TWOFISH256
  • MCRYPT_WAKE (仅限 libmcrypt > 2.4.x)
  • MCRYPT_XTEA (仅限 libmcrypt > 2.4.x)

您必须(在 CFBOFB 模式下)或可以(在 CBC 模式下)为相应的密码函数提供初始化向量 (IV)。IV 必须是唯一的,并且在解密/加密时必须相同。对于存储为加密形式的数据,您可以使用存储数据的索引的函数输出(例如,文件名的 MD5 密钥)。或者,您可以将 IV 与加密数据一起传输(有关此主题的讨论,请参阅 Schneier 编写的《应用密码学》第 9.3 章 (ISBN 0-471-11709-9))。

添加注释

用户贡献的注释 5 个注释

5
robin
13 年前
当由 mcrypt 2.4.x 及更高版本定义时,MCRYPT_TWOFISH 常量是 Twofish 的 256 位版本;它使用 1-32 字节密钥、16 字节 IV,并在 CBC 模式下输出 16 字节块。
2
Rob
10 年前
事实上,这些常量可以作为函数 mcrypt_module_open() 的输入,因为 mcrypt.php 包含将这些常量映射到从 mcrypt_list_algorithms() 获取的适当字符串值的定义。
-2
Mark
11 年前
注意,这些不是您在函数 mcrypt_module_open 中用于指定算法的名称。

使用 mcrypt_list_algorithms 获取要粘贴到其中的正确名称
-3
stanislav dot eckert at vizson dot de
9 年前
IDEA 算法的最新专利已于 2012 年到期,该密码现在已无专利保护,可免费使用。
-5
dan at zaph dot com
8 年前
可解释性

mcrypt 不支持 PKCS#7 填充,它使用非标准且不安全的空填充。这意味着为了与大多数其他实现互操作,必须在加密之前添加 PKCS#7 填充,或者在解密之后删除。这是互操作性问题的主要来源。

在与 AES 互操作时,mcrypt 算法必须指定为 MCRYPT_RIJNDAEL_128,因为 AES 仅支持 128 位的块大小。经常会混淆这一点,因为它没有指定密钥大小。
To Top