我尝试过多种解决方案,可以对上传的文件进行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&gt;?m?]?Y%?| {?$? “ 在第12行“
感谢您提前提供任何帮助
编辑:添加
$encrypted = addslashes($encrypted);
使代码有效。该文件已上传到数据库中,但规模不断扩大,因此无法解码。
答案 0 :(得分:0)
能够通过使用预准备语句来修复所有问题。 addslashes函数与加密文件混乱。