PHP Conference Japan 2024

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 則註記

robin
13 年前
由 mcrypt 2.4.x 版及後續版本定義的 MCRYPT_TWOFISH 常數是 Twofish 的 256 位元版本;它使用 1-32 位元組的金鑰、16 位元組的 IV,並在 CBC 模式下輸出 16 位元組的區塊。
Rob
10 年前
這些常數實際上可以用作 mcrypt_module_open() 函式的輸入,因為 mcrypt.php 包含將這些常數映射到從 mcrypt_list_algorithms() 獲得的適當字串值的定義。
Mark
12 年前
注意,這些不是您在 mcrypt_module_open 函式中用於指定演算法的名稱。

使用 mcrypt_list_algorithms 來獲取正確的名稱以放入其中
stanislav dot eckert at vizson dot de
9 年前
IDEA 演算法的最新專利已於 2012 年到期,該密碼現在已無專利,可以免費使用。
dan at zaph dot com
9 年前
可解釋性

mcrypt 不支援 PKCS#7 填充,它使用非標準且不安全的空填充。這意味著為了與大多數其他實現互通,必須在加密之前新增 PKCS#7 填充,和/或在解密之後移除。這是互通性問題的主要來源。

與 AES 互通時,mcrypt 演算法必須指定為 MCRYPT_RIJNDAEL_128,因為 AES 只支援 128 位元的區塊大小。通常會混淆這指定的是金鑰大小,但事實並非如此。
To Top