无法将加密文本插入sql

时间:2015-01-06 03:00:27

标签: php ssl

我目前在php中使用openssl_public_encrypt方法加密使用GET发送到服务器的消息(这只是理论证明),如果我尝试将加密文本存储到数据库中,我最终会得到结果:“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册以获得正确的语法”,即使明文不会出现此错误。

用于生成密钥的代码:

$config = array(
"digest_alg" => "sha512",
"private_key_bits" => 4096,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);
     

//创建私钥和公钥      $ res = openssl_pkey_new($ config);

     

//将私钥从$ res解压缩到$ privKey      openssl_pkey_export($ res,$ privKey);

     

//将公钥从$ res提取到$ pubKey       $ pubKey = openssl_pkey_get_details($ res);       $ pubKey = $ pubKey [“key”];

     

openssl_public_encrypt($ message,$ encrypted,$ pubKey);       $ sql =“INSERT INTO na14_messagingmessagesToFromFormessage)VALUES('$ To',' $ From','$ For',$encrypted)“;

加密字符串示例: @aú¡±清大]н¾ÄÉçù\ dgQppx +Þ~ŽüÑzXê+¡™½ºWÏãУú]¢C-A'O>μCŽ{¶f¶³” CAA“,HK $ c〜“•;ï&gt;Ѿ)”fá+ž™ØÓ•¿¼€äF£Þ\ZjxÂS#þ³“”zÇùÁçd¥qw,mn $eî'$Ñæ6½ ™ÕÍPƒuâÛŸ%'o7b¯gŸ»D [³%ådKÁ·¶Et×y©[〜Û•g @?°Ü÷§Ý±³Õßý<¸Åå¡¡{{Ö'f; w-3ïMkHÿÇùÒ1•ÏåÜ< / p>

我假设它只是导致将其放入数据库的错误的字符,我尝试过varchar,longtext和blob。我不确定哪种数据类型适用于此。

1 个答案:

答案 0 :(得分:0)

将SQL变量更改为longtext以及编码为base64已修复了所有发生的问题。