Выяснение точного ключа, созданного PHP mcrypt

Приложение PHP, которое я поддерживаю, использует Rijndael_256 с шифрованием EBC_MODE с помощью mcrypt. Забавно, что длина ключа составляет не 256 бит, а всего 160. Согласноmcrypt_encrypt документация ключ дополняется \ 0, чтобы получить требуемый размер, если он слишком мал.

The key with which the data will be encrypted. If it's smaller than the required keysize, it is padded with '\0'. It is better not to use ASCII strings for keys.

Это, кажется, происходит в началестрока 1186 в mcrypt.c и модифицирование ключа в строке 1213.

Допустим, у нас есть$key = 'abcdefghijkm'; что слишком мало, но реализация mcrypt в PHP гарантирует, что он будет расширен до 32 символов (или 256 бит) при использовании RIJNDAEL_256. Как будет выглядеть окончательный ключ?

Я спрашиваю об этом, потому что создается другое приложение, которое использует те же зашифрованные данные, но на другом языке. Perl, если быть точным, и я используюCrypto::Rijndael, Для данного примера ключа, какой именно ключ я должен был бы передатьCrypto::Rijndael (или любой другой в этом отношении), чтобы иметь возможность снова расшифровать данные?

Update

С помощью Perl я могу сгенерировать ключ, который "s \ 0 padded делаетpack('a32', 'my secret key'); (или жеZ32), length() сообщит 32 иCrypt::Rijndael Модуль принимает ключ. Глядя на источник PHP mcrypt, это должен быть ключ, который генерируется (дополненный \ 0), но он просто не примет его.

В теории в PHPpack('a32', 'my secret key'); должен приводить к тому же ключу с добавлением \ 0, который генерирует PHP mcrypt, но это не так.

Я очень близок к тому, чтобы просто снова зашифровать все, но с новым ключом. Это занимает слишком много времени.

Ответы на вопрос(2)

Ваш ответ на вопрос