PHP XOR加密失败

时间:2017-11-27 01:37:18

标签: php xor

我尝试过多种解决方案,可以对上传的文件进行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);

使代码有效。该文件已上传到数据库中,但规模不断扩大,因此无法解码。

1 个答案:

答案 0 :(得分:0)

能够通过使用预准备语句来修复所有问题。 addslashes函数与加密文件混乱。