php - MySQL有时无效的查询语法

标签 php mysql encryption mysqli

<分区>

尝试加密一个社会安全号码,查询偶尔会起作用,但每 5 到 10 次就会抛出一个错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '�9~���d�~/C�yK�~�� _', ' 50', '62' )' at line 1
SSN: _mosPEdaXEsB7zJCQe5aymaCmkcSl9bnPL5ClLXcz2QA=_ 
IV: _ �6�k���_O�'�9~���d�~/C�yK�~�� _

这是代码

    //Encryption/Decryption key
     $Key = hash("SHA256", $Lname, true);
    //Encryption Algorithm
    $cipher_alg = MCRYPT_RIJNDAEL_256;

    $iv =  mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg, MCRYPT_MODE_ECB), MCRYPT_RAND);

    $ESSN = mcrypt_encrypt($cipher_alg, $Key, $SSN, MCRYPT_MODE_CBC, $iv);
    $ESSN = '_' . base64_encode($ESSN) . '_';
     $iv = '_' . $iv . '_';

if(!mysqli_query($connection, "CALL Update_ClientSSN('$ESSN','$iv', ' $AppID',  '" . $_SESSION['ID'] . "' );")){
        $Save .= " Error saving Client SSN";
    echo $connection->error;
    echo $ESSN . ' IV: ' . $iv;
    }

最初我只是连接 IV 和密文然后爆炸,但这仍然会引发错误,所以下划线只是我在试验。我很难过

最佳答案

您应该尝试对 $iv 变量进行 base64_encode,就像您对 $ESSN 所做的那样,或者至少在将其存储在数据库中之前将其转换为十六进制格式,看看是否有帮助。原因是 $iv 可能包含非法字符,例如 '(单引号)

关于php - MySQL有时无效的查询语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994221/

相关文章:

python - openssl -aes-128-ecb 加密与 python Crypto.Cipher AES 加密不匹配

javascript - 如何使用 javascript 查找并替换某些关键字之间的文本?

php - 如何真正快速地使用 PHP 在服务器上复制 2000 张图像?

encryption - TCL 代码 : Return encrypted phrase in standard ascii characters

php - 404子域rewriteRule的错误处理

mysql - 不安全的列名

PHP 5.5 找不到 MySQLi 构造函数

Mysql 按 OR 顺序排序

php - SQLSTATE[HY000] [2002] 无法建立连接

php - 我可以通过 strip_tags() 循环运行 $_POST 数组 PHP