Можно ли расшифровать файлы, зашифрованные с помощью php mcrypt_encode, сторонними утилитами? - PullRequest
1 голос
/ 03 июня 2010

Я неопытный с симметричным шифрованием. Я шифрую PDF-файл в php, используя следующий код:

$source_filepath = RB::get('docroot') . RB::get('baseUrl') . '/submissions/' . $this->_filename;
$encrypted_filepath =  $source_filepath . '.nc';
$pdf_data = file_get_contents($source_filepath);
$encrypted_data = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, '1234567812345678', $pdf_data, MCRYPT_MODE_ECB);
file_put_contents($encrypted_filepath, $encrypted_data);

Затем мне нужно расшифровать его вне php, потенциально используя приложение / утилиту для настольного компьютера на другом компьютере. Я попытался расшифровать файл с помощью утилиты aescrypt (http://www.aescrypt.com/), которая сообщает мне:

"Ошибка: неверный заголовок файла (файл не зашифрован или поврежден? [C, fffffff0, fffffffe])"

, а также команда mcrypt, которая сообщает мне: Файл thefile.pdf.nc НЕ был успешно расшифрован.

Мне еще не удалось расшифровать все, что зашифровано с помощью encrypt, за пределами php. Я пытался использовать blowfish и расшифровывать его с помощью bcrypt (http://bcrypt.sourceforge.net/), а также с похожими результатами. Я подозреваю, что виновато мое незнание о том, как работает шифрование, но любая помощь или образование будут оценены.

Ответы [ 2 ]

1 голос
/ 03 июня 2010

Я шифрую файл PDF в php, используя следующий код:

Причина, по которой вы получаете ошибку от aescrypt, заключается в том, что файл, который вы пишете, не имеет ничего общего с форматом файла AEScrypt. К счастью, разработчики AESCrypt предоставили очень подробные инструкции по формату файла .

Если после реализации этой проблемы у вас все еще есть проблемы, вы можете попробовать список рассылки AESCrypt и, если вам не удастся связаться с разработчиками и предложить спонсору разработку Совместимый шифратор / расшифровщик в PHP.

0 голосов
/ 04 июня 2010

Я не знаю PHP или mcrypt, но просто основываясь на вызывающей строке, я подозреваю, что вы можете расшифровать файл с помощью утилиты командной строки openssl. Следующий пример должен соответствовать тому, что вам нужно:

 openssl aes-128-ecb -d -K 303132333435363738303132333435363738 -iv 00000000000000000000000000000000 -P -nopad -nosalt -in cipherfile -out plainfile

ПРИМЕЧАНИЕ: вам придется снять любые прокладки самостоятельно. mcrypt_encrypt, очевидно, привязывается к символам '\ 0', чтобы дополнить данные кратным размеру блока.

...