0

好吧,作为加密的新手,我终于设计出了一个很棒的系统。问题是,我很确定它破坏了我的 SQL 查询。如果你们中的任何人可以帮助我,我相信这是我很容易忽略的事情。这是我用来生成密钥的代码:

include('Crypt/RSA.php');

$rsa = new Crypt_RSA();

extract($rsa->createKey());

这是加密的代码:

openssl_public_encrypt($data, $encrypted, $publickey);
return $encrypted;

以上所有这些都可以正常工作,我通过一个函数调用它。所有加密本身都有效。问题是当我尝试将值存储在 MySQL 数据库中时,我的查询随机失败。

当我打印要调试的查询时,我看到加密字符串 '��y�6u�������2�N���Ī�:ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½7�����Bï¿ ½ï¿½ï¿½ï¿½<����� ��7�;[�N\�����y/�X��߭֟*���=�- ï¿½ï¿½ï¿ ½ï¿½ï¿½Z�EI)ß�'�cy/� I��#?��1Gh��$�d�

这有时会过早地结束查询字符串。我想知道是否应该指定一个特定的字符集,或者我是否需要更改 MySQL 数据类型(它被设置为 LONGTEXT 然后 LONGBLOB)。

再次提前感谢!

4

1 回答 1

0

Patashu 的评论解决了我的问题。使用 base64_encode() 和 base64_decode() 可以防止查询中的错误,这显然是由于在查询中发送了二进制文件造成的。谢谢帕塔舒!!!

于 2013-06-06T15:38:20.987 回答