У меня есть метод шифрования с mycrypt, а шифр – 3des
, mode ecb
:
mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' )
Теперь я хочу зашифровать его с помощью openssl_encrypt
, и я не нашел des3-ecb
в openssl_get_cipher_methods()
.
теперь я хочу зашифровать его, используя
openssl_encrypt
, и я не нашелdes3-ecb
вopenssl_get_cipher_methods()
.
Это des-ede3
. Симметричное шифрование с блочным шифрованием требует своего рода режима работы . Если вы просмотрите список, вы увидите что-то вроде des-ede3
, des-ede3-cbc
, des-ede3-cfb
и des-ede3-ofb
. CBC, CFB и OFB все названы, а неназванный шифр должен быть единственным другим обычным режимом работы: ECB.
Никогда не используйте режим ECB . Он детерминирован и поэтому не является семантически безопасным. Вы должны, по крайней мере, использовать рандомизированный режим, например CBC или CTR . Лучше аутентифицировать ваши зашифрованные тексты, чтобы атаки, подобные атаке оскорбления , не были возможны. Это можно сделать с помощью аутентифицированных режимов, таких как GCM или EAX, или с помощью схемы шифрования-затем-MAC .
Не используйте Triple DES в наши дни. Он обеспечивает в лучшем случае 112 бит безопасности, даже если вы используете самый большой размер ключа 192 бит. Если используется более короткий размер ключа, тогда он обеспечивает только 56 или 57 бит безопасности. AES будет быстрее (у процессоров есть специальный набор инструкций AES-NI) и даже более безопасный с минимальным размером ключа 128 бит. Существует также практическое ограничение на максимальный размер зашифрованного текста с помощью 3DES. См. Сравнение безопасности 3DES и AES .