©
This document uses PHP Chinese website manual Release
下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。
Mcrypt 支持以下四种分组密码模式:CBC, OFB,CFB 和 ECB。 如果使用 libmcrypt-2.4.x 或更高版本链接, 还可以支持 nOFB 分组模式 和 流 模式。 下列是所支持的加密模式以及其对应的预定义常量。 完整的参考见:Applied Cryptography by Schneier (ISBN 0-471-11709-9)。
MCRYPT_MODE_ECB
(electronic
codebook) 适用于随机数据,
比如可以用这种模式来加密其他密钥。
由于要加密的数据很短,并且是随机的,所以这种模式的缺点反而起到了积极的作用。
MCRYPT_MODE_CBC
(cipher block
chaining) 特别适用于对文件进行加密。
相比 ECB,
它的安全性有明显提升。
MCRYPT_MODE_CFB
(cipher
feedback) 对于每个单独的字节都进行加密,
所以非常适用于针对字节流的加密。
MCRYPT_MODE_OFB
(output feedback, in
8bit) 和 CFB 类似。
它可以用在无法容忍加密错误传播的应用中。
因为它是按照 8 个比特位进行加密的,
所以安全系数较低,不建议使用。
MCRYPT_MODE_NOFB
(output feedback,
in nbit) 和 OFB 类似,但是更加安全,
因为它可以按照算法指定的分组大小来对数据进行加密。
MCRYPT_MODE_STREAM
是一种扩展模式,
它包含了诸如 "WAKE" 或 "RC4" 的流加密算法。
其他模式以及随机设备常量:
MCRYPT_ENCRYPT
( integer )
MCRYPT_DECRYPT
( integer )
MCRYPT_DEV_RANDOM
( integer )
MCRYPT_DEV_URANDOM
( integer )
MCRYPT_RAND
( integer )
[#1] Andrey Andreev [2014-03-06 12:03:13]
You can just use strings instead of the constants ... they are useless and lacking for other modes that are fully supported. Here's a list:
cbc
ecb
ofb
nofb
cfb
ncfb
ctr
stream
[#2] gordon at vixo dot com [2013-02-02 20:17:29]
These constants don't cover all the possible options.
There are two constants:
MCRYPT_MODE_OFB
MCRYPT_MODE_NOFB
These relate to using OFB mode in 8-bit feedback mode and using the same feedback length as the key
There is one constant
MCRYPT_MODE_CFB which uses 8-bit feedback mode
There ought to be a constant
MCRYPT_MODE_NCFB which uses the same feedback length as the key.
In fact you can just use the option 'ncfb' in mycrypt