由 mcrypt 2.4.x 版及後續版本定義的 MCRYPT_TWOFISH 常數是 Twofish 的 256 位元版本;它使用 1-32 位元組的金鑰、16 位元組的 IV,並在 CBC 模式下輸出 16 位元組的區塊。
以下是 mcrypt 擴充套件目前支援的加密法列表。如需支援加密法的完整列表,請參閱 mcrypt.h 結尾的定義。 mcrypt-2.2.x API 的一般規則是您可以使用 MCRYPT_ciphername 從 PHP 存取加密法。使用 libmcrypt-2.4.x 和 libmcrypt-2.5.x API,這些常數也可以運作,但可以透過呼叫 mcrypt_module_open() 將加密法的名稱指定為字串。
您必須(在 CFB
和 OFB
模式下)或可以(在 CBC
模式下)提供初始化向量 (IV) 給相對應的加密函式。IV 必須是唯一的,並且在解密/加密時必須相同。對於儲存加密的資料,您可以使用儲存資料索引的函式輸出(例如檔案名的 MD5 金鑰)。或者,您可以將 IV 與加密資料一起傳輸(有關此主題的討論,請參閱 Schneier 的《應用密碼學》第 9.3 章(ISBN 0-471-11709-9))。
由 mcrypt 2.4.x 版及後續版本定義的 MCRYPT_TWOFISH 常數是 Twofish 的 256 位元版本;它使用 1-32 位元組的金鑰、16 位元組的 IV,並在 CBC 模式下輸出 16 位元組的區塊。
這些常數實際上可以用作 mcrypt_module_open() 函式的輸入,因為 mcrypt.php 包含將這些常數映射到從 mcrypt_list_algorithms() 獲得的適當字串值的定義。
可解釋性
mcrypt 不支援 PKCS#7 填充,它使用非標準且不安全的空填充。這意味著為了與大多數其他實現互通,必須在加密之前新增 PKCS#7 填充,和/或在解密之後移除。這是互通性問題的主要來源。
與 AES 互通時,mcrypt 演算法必須指定為 MCRYPT_RIJNDAEL_128,因為 AES 只支援 128 位元的區塊大小。通常會混淆這指定的是金鑰大小,但事實並非如此。