mcrypt
фактически реализует больше режимов, чем в списке , вы можете использовать имена строк для доступа к ним:
cbc
- CBC mode cfb
- 8-битный режим CFB ; ncfb
- размер блока CFB режим; - Режим
nofb
- OFB (не ofb
); ctr
- CTR .
Режимы отличаютсяв деталях реализации, поэтому их пригодность зависит от ваших данных и среды.
Заполнение :
CBC Режим только шифруетполные блоки, поэтому mcrypt
дополняет ваш открытый текст нулевыми байтами, если вы не реализуете собственное заполнение.
CFB , OFB и CTR режимы шифрования сообщений любой длины.
Вектор инициализации :
CBC *Режимы 1066 * и CFB требуют случайного IV (не используйте MCRYPT_RAND
).
* 1Режим 074 * OFB просто требует уникального IV (например, глобального счетчика, может быть первичного ключа базы данных, если строки никогда не изменяются или удаляются).
CTR требует, чтобы каждый блок счетчика был уникальным (не только IV сообщения, который является первым блоком счетчика, но и остальные, сформированные путем увеличения блока счетчика на 1 для каждого блока сообщения).
Дополнительная информация в Рекомендациях NIST .
Существуют различия в производительности, которые не должны быть важны в PHP, например, можно ли распараллеливать шифрование или дешифрование и сколько шифровитерации используются для каждого блока (обычно одна, но 16 в 8-битном режиме CFB ).
Существуют различия в изменчивости , которые должны быть не важны, поскольку вы будет применять MAC .
И могут быть различия в их безопасности, но для этого вы должны проконсультироваться с криптографом .