Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP、MySQL和RSA加密_Php_Mysql_Cryptography_Rsa - Fatal编程技术网

PHP、MySQL和RSA加密

PHP、MySQL和RSA加密,php,mysql,cryptography,rsa,Php,Mysql,Cryptography,Rsa,我写了一段代码,出于测试目的,它只对一些文本进行加密然后解密 我使用了phpseclib,效果很好。当我将加密文本存储在mysql数据库中,然后从数据库中检索并尝试解密时,我得到一个解密错误。为了在数据库中存储加密文本,我必须使用addslashes()php函数,然后在解密之前使用stripslashes()。当我比较我存储在数据库中的字符串时,在去掉斜杠后它是完全相同的,但不知为什么解密不起作用 这是一个普遍的问题吗?是否有一种特殊的方法来创建一个包含RSA生成的所有字符的数据库?听起来您可

我写了一段代码,出于测试目的,它只对一些文本进行加密然后解密

我使用了
phpseclib
,效果很好。当我将加密文本存储在mysql数据库中,然后从数据库中检索并尝试解密时,我得到一个解密错误。为了在数据库中存储加密文本,我必须使用
addslashes()
php函数,然后在解密之前使用
stripslashes()
。当我比较我存储在数据库中的字符串时,在去掉斜杠后它是完全相同的,但不知为什么解密不起作用


这是一个普遍的问题吗?是否有一种特殊的方法来创建一个包含RSA生成的所有字符的数据库?

听起来您可能在数据库中错误地存储了数据。您将RSA的输出存储在哪种类型的列中?使用二进制列类型,而不是字符列类型。我将其存储在varchar(100)列中。我尝试了一个二进制列,得到了相同的结果。正如我所说,当我从数据库打印数据时,它与添加数据之前完全相同。然而,解密仍然不起作用,我收回了我所说的关于二进制列的内容。我似乎无法将字符串正确地存储为二进制。我找到了转换为二进制的代码:$bin_str=unpack(“B*”,pack(“u*”,$cyphertext));这是从二进制文件转换而来的:$recypher=unpack(“u*”,pack(“B*”,$bin_str);但是我遇到了诸如“Type u:unknown format code”之类的php错误。问题实际上是公钥的问题,现在已经解决了。在addslashes()之后,将字符串存储在数据库中效果很好函数。感谢大家的帮助听起来您可能在数据库中存储了错误的数据。您将RSA的输出存储在哪种类型的列中?请使用二进制列类型,而不是字符列类型。我将其存储在varchar(100)中列。我尝试了一个二进制列,得到了相同的结果。正如我所说,当我从数据库打印数据时,它与添加它之前的数据完全相同。但是,解密仍然不起作用。我收回了我所说的关于二进制列的内容。我似乎无法将字符串正确地存储为二进制。我找到了以下转换为二进制的代码:$bin_str=unpack(“B*”,pack(“u*”,$cyphertext));这是用于从二进制文件转换的:$recypher=unpack(“u*”,pack(“B*”,$bin_str”);但是我遇到了php错误,比如“Type u:unknown format code”。问题实际上是公钥的问题,现在已经解决了。在addslashes()之后,将字符串存储在数据库中效果很好谢谢大家的帮助