我尝试过多种解决方案来使上载文件上的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服务器版本对应的手册,以获得在第12行使用”??ѿG?a?og??og?o3y q:??eH}?,Y?Z>?m?]?y%?{?$?‘的正确语法。“
谢谢你提前提供帮助
编辑:添加
$encrypted = addslashes($encrypted);让代码正常工作。该文件已上载到数据库中,但其大小已增加,因此不可解码。
发布于 2017-11-27 04:14:46
能够通过使用准备好的语句来修复所有的问题。addslashes函数与加密文件混在一起。
https://stackoverflow.com/questions/47502866
复制相似问题