Клиент отправляет нам файл, зашифрованный с помощью «AES-256». Он поступает в виде двоичного файла (обычно я получаю файлы с кодировкой base64, но это должно быть ОК), и в отчаянии я повторил с помощью PHP-параметров, используя mcrypt_decrypt, но не могу взломать его.Расшифровка Rijndael с парольной фразой в PHP
<?php
$str = file_get_contents($argv[1]);
$key ='jimminny fred owns apple'; //not the actual one, but same length
$modes = array(
MCRYPT_MODE_ECB,
MCRYPT_MODE_CBC,
MCRYPT_MODE_CFB,
MCRYPT_MODE_OFB,
MCRYPT_MODE_NOFB);
$cryps = array(
MCRYPT_RIJNDAEL_128,
MCRYPT_RIJNDAEL_256,
MCRYPT_RIJNDAEL_192);
foreach($modes as $mode){
foreach($cryps as $cryp){
echo "\n\n$cryp $mode\n\n";
echo mcrypt_decrypt($cryp, $key, $str, $mode);
}
}
Я понимаю, что я должен получать ключ 32-байт, а не 24 гольца парольной фразы, но они используют программу под названием GlobalScape и это все, что требуется для его шифровании «Rijndael». (См. Прикрепленный снимок экрана, показывающий диалоговое окно, которое клиент завершает в конце).
После многого другого тестирования и беспорядка, я вполне уверен, что файл GlobalScape не зашифрован стандартным образом. Оказывается, парольная фраза не должна быть 32 байта - я не понимаю, почему, но PHP кажется счастливым - даже в версии 5.6, которая должна настаивать на ключах из 32 байт в соответствии с страницами mcrypt на php .net – Pete