Расшифровка AES с помощью PHP mcrypt

Короткий вопрос: я зашифровал строку с помощью AES-256 с помощью инструмента командной строки openssl. Как я могу расшифровать это с помощью библиотеки PHP openssl? (поскольку Rijndael-256 и AES-256 не одно и то же, и нет опции AES-256)

Заранее спасибо, Джори.


person Jori    schedule 08.06.2012    source источник
comment
Rijndael ЯВЛЯЕТСЯ AES. Когда NIST хотел выбрать алгоритм в качестве расширенного стандарта шифрования, Rijndael был одним из кандидатов. Rijndael победил и теперь является стандартом Advanced Encryption Standard.   -  person Ranhiru Jude Cooray    schedule 08.06.2012
comment
Согласно php.net/manual/en/function.mcrypt-decrypt.php, это не так (первый комментарий), но википедия говорит, что AES является подмножеством Rijdael. Комментарий неправильный?   -  person Jori    schedule 08.06.2012
comment
Это похоже на различие в реализации. К сожалению, я не знаю об этой разнице в реализации PHP. Кроме того, AES НЕ является подмножеством Rijndael, но Rijandael был криптоалгоритмом, выбранным в качестве A.E.S.   -  person Ranhiru Jude Cooray    schedule 08.06.2012
comment
@RanhiruCooray AES является подмножеством Rijndael. Строго говоря, AES - это название стандарта, а описанный алгоритм является (ограниченным) вариантом Rijndael. Однако на практике алгоритм также называют AES. Это из WikiPedia, но можете не сомневаться, что это правильно.   -  person Maarten Bodewes    schedule 08.06.2012


Ответы (2)


Вы должны использовать MCRYPT_RIJNDAEL_128 вместо MCRYPT_RIJNDAEL_256, но вы должны использовать 256-битный ключ, предпочтительно тот, которым вы зашифровали данные.

X в MCRYPT_RIJNDAEL_X - это размер блока шифра. Rijndael имеет несколько размеров блоков и ключей, но только Rijndael с размером блока 128 бит и размером ключа 128, 192 или 256 бит (а также с векторами, зависящими от размера ключа и количеством раундов) следует называть AES.

Убедитесь, что вы также соответствуете режиму шифрования (небезопасная кодировка ECB или CBC) и убедитесь, что ваше (не) заполнение правильное.

person Maarten Bodewes    schedule 08.06.2012
comment
Я думал, размер ключа и размер блока должны быть одинаковыми? - person Jori; 09.06.2012
comment
И почему именно я не могу использовать MCRYPT_RIJNDAEL_256? Мне жаль, что это немного сбивает меня с толку, ха-ха! - person Jori; 09.06.2012
comment
Нет, размер ключа и размер блока не зависят друг от друга напрямую. AES всегда имеет размер блока 128 бит. Вот почему вам нужно использовать именно эту конфигурацию Rijndael. - person Maarten Bodewes; 09.06.2012

Разве не должно быть приемлемым использование любой процедуры для дешифрования, если она расшифровывает AES-256?

Попробуйте это, ранее видели в stackoverflow ... это было всего лишь на расстоянии google ... PHP AES encrypt / decrypt

person starlocke    schedule 08.06.2012