Я пробовал несколько решений для создания XOR-кодировки для загруженного файла, но он всегда терпит неудачу. проблема в основном в том, что незашифрованный файл прекрасно загружается в базу данных mysql:
$fp = fopen($tempPath, 'r');
$content = fread($fp, filesize($tempPath));
$content = addslashes($content);
fclose($fp);
$encrypted = "";
$key = "123456";
for($i = 0; $i < strlen ($content); $i++)
{
$encrypted = $encrypted . chr( ord( $content[$i] ) );
}
$sql = "INSERT INTO
doc_files (
id,
filedata,
filename,
cryptdata,
beschreibung,
category,
filetype)
VALUES (
'$new_guid',
'$encrypted',
'$title',
'$key',
null,
'$cat',
'$filetype'
);";
но при изменении только строки, кодирующей файл (добавление XOR), весь сценарий завершается с ошибкой mysql. Формат поля mysql — longblob.
$encrypted .= chr( ord( $content[$i] ) ^ ord( $key[$i % strlen ($key)] ) );
«У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое
соответствует версии вашего сервера MySQL для правильного использования синтаксиса
около ‘?? ѿG? a ???? og ?? 3O ???? o3y q: ?? eH} ?????., Y? Z>? m?]? Y%? | {? $? ‘
на линии 12 «
Спасибо за любую помощь заранее
РЕДАКТИРОВАТЬ: добавление
$encrypted = addslashes($encrypted);
заставляет код работать. Файл загружается в базу данных, но его размер увеличился и поэтому не может быть декодирован.
удалось исправить все, используя подготовленные заявления. функция addlashes перепуталась с зашифрованным файлом.
Других решений пока нет …