Descobrir a chave exata criada pelo mcrypt do PHP

Um aplicativo PHP que estou mantendo usa Rijndael_256 com criptografia EBC_MODE com mcrypt. Diversão diz que a chave não tem 256 bits, mas apenas 160. De acordo com omcrypt_encrypt documentação a chave é preenchida com \ 0 para obter o tamanho necessário se for muito pequeno.

A chave com a qual os dados serão criptografados. Se for menor que o tamanho necessário, é preenchido com '\ 0'. É melhor não usar strings ASCII para chaves.

Isso parece acontecer em torno do início delinha 1186 em mcrypt.c e modificando a chave na linha 1213.

Então vamos dizer que temos$key = 'abcdefghijkm'; o que é muito curto, mas a implementação do PHP do mcrypt garante que ele seja estendido para 32 caracteres (ou 256 bits) ao usar o RIJNDAEL_256. Como será a chave final?

Eu estou perguntando isso porque outro aplicativo está sendo construído que usa os mesmos dados criptografados, mas está em outro idioma. Perl para ser exato e eu estou usandoCrypto::Rijndael. Para a chave de exemplo fornecida, qual é a chave exata que eu teria que alimentar paraCrypto::Rijndael (ou qualquer outro para esse assunto) para poder descriptografar os dados novamente?

Atualizar

Com Perl eu posso gerar uma chave que é \ 0 acolchoado fazendopack('a32', 'my secret key'); (ouZ32)length() irá relatar 32 e oCrypt::Rijndael módulo aceita a chave. Olhando para a fonte do mcrypt do PHP, esta deve ser a chave que está sendo gerada (\ 0 padded), mas ela simplesmente não vai aguentar.

Em teoria em PHPpack('a32', 'my secret key'); deve resultar na mesma tecla \ 0 acolchoada que o mcrypt do PHP gera, mas este não é o caso.

Estou muito perto de apenas criptografar tudo novamente, mas com uma nova chave. Isso está demorando muito tempo.

questionAnswers(2)

yourAnswerToTheQuestion