我使用openssl_public_encrypt方法來加密使用GET發送到服務器的消息目前我在PHP(這只是一個理論的證明),如果我嘗試存儲加密的文本到數據庫中,我最終得到的結果是:「你的SQL語法有錯誤;檢查與你的MySQL服務器版本對應的手冊是否有正確的語法」,儘管這個錯誤不會出現在純文本中。無法插入加密文本到SQL
代碼用來生成密鑰:
$config = array( "digest_alg" => "sha512", "private_key_bits" => 4096, "private_key_type" => OPENSSL_KEYTYPE_RSA, );
//創建私鑰和公鑰 $水庫= openssl_pkey_new($配置);
//將私鑰從$ res提取到$ privKey openssl_pkey_export($ res,$ privKey);
//將公鑰從$ res提取到$ pubKey $ pubKey = openssl_pkey_get_details($ res); $ pubKey = $ pubKey [「key」];
openssl_public_encrypt($消息,$加密,$ PUBKEY); $ SQL = 「INSERT INTO
na14_messaging
messages
(To
,From
,For
,message
)VALUES( '$爲了', '$從', '$對於',$encrypted
)。」;加密的字符串的
實施例: @aú¡±清大]н¾ÄÉçù\ dgQppx +Þ~ŽüÑzXê+¡™½ºWÏãУú]¢C-A'O>μCŽ{¶f¶³」 CAA「,HK <á[àžÑõ〜ŸòqòÊÊ「ÏAÁ{™OMu£öåmL¶9j½m¨eë] |ñNšÅo|」~û®AûÉ{q¤<'Vÿ¤¤*。÷+j'iËμ_öSÏ~þHX_΃âñ'ÎãDÌÛó겿2¾GÀ5ûà 「á©«™®`§=¹0åÿŸ|ácü¤l¼ÛmÚysŽH2È«\ SP÷ÒÕ.ºjôÊEŠ»™! 'LrñboïVܶÓFw〜3‡ÛŽ.Z,:îawxRã^〜>:μ-AO' <ûQ8, •「ÕC9Ç[\£vU¶°6‡Þts< CG¢8Y8> $ c~」•; I> NH 3)「FA + Z™OO•¿¼€AF£Þ\ZjxÂS#þ³」「zÇùACD¥QW ,MN $ EI '$•Ñæ6нžS™ÕÍPƒuâÛŸ%' o7b¯gŸ»d [³%ådKÁ·¶的Et×Y©[~Û•克@?°Ü÷§Ý±³Õßý<¸ å¡Ð{(Ö'f; W-3ïMkHÿÇùÒ1•IAU
我假定這只是這是造成把這個到數據庫中的錯誤的文字,我已經試過VARCHAR,LONGTEXT,和斑點。我不確定哪種數據類型適用於此。
請顯示您的代碼?這聽起來像你沒有使用參數化語句或轉義字符串。 – Barmar
事實證明,我再次做了longtext,現在它的工作原理,我不知道爲什麼,但如果它工作,它會工作 – user2636072
@ user2636072也許它現在可能不工作。該編碼數據中有多少「\ X00」字節。 – Jasen