Используйте openssl_encrypt вместо Mcrypt для шифрования 3DES-ECB.

У меня есть метод шифрования с mycrypt и шифр 3des, режим ecb:

mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' )

Теперь я хочу зашифровать его с помощью openssl_encrypt, и я не нашел des3-ecb в списке openssl_get_cipher_methods().


person yiming.xie    schedule 13.09.2016    source источник
comment
Просто к вашему сведению, вы должны использовать AES, а не любую форму DES.   -  person Luke Joshua Park    schedule 13.09.2016


Ответы (1)


теперь я хочу зашифровать его с помощью 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.

person Artjom B.    schedule 13.09.2016