我目前在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_messaging
。messages
(To
,From
,For
,message
)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。我不确定哪种数据类型适用于此。
答案 0 :(得分:0)
将SQL变量更改为longtext以及编码为base64已修复了所有发生的问题。