2016-11-30 1 views
0

Клиент отправляет нам файл, зашифрованный с помощью «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». (См. Прикрепленный снимок экрана, показывающий диалоговое окно, которое клиент завершает в конце). enter image description here

+0

После многого другого тестирования и беспорядка, я вполне уверен, что файл GlobalScape не зашифрован стандартным образом. Оказывается, парольная фраза не должна быть 32 байта - я не понимаю, почему, но PHP кажется счастливым - даже в версии 5.6, которая должна настаивать на ключах из 32 байт в соответствии с страницами mcrypt на php .net – Pete

ответ

0

Я проверил сайт, и GlobalScape не предлагает никаких подробностей о том, как они шифруются. Они не только не задают функцию деривации ключа (KDF), которую они используют для шифрования «Rijndael». Маловероятно, что они напрямую используют кодовую фразу в качестве ключа - если только они не являются полными маппетами, но KDF может быть чем угодно. Они не указывают режим работы для AES либо

Просто не используйте такой мусор. Просто используйте PGP или один из стандартных вариантов отправки/получения сообщений.

Прогулка по дикой гусиной погоне вам не поможет. Даже если вы запрограммируете решение, тогда это может закончиться неудачно в будущем из-за любого количества факторов. Попросите вашего клиента четко указать протокол вместо того, чтобы дать вам скриншот.

+0

Спасибо. Хороший совет. Почти точно, что мой менеджер тоже сказал :). – Pete

Смежные вопросы