Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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的加密问题_Php_Ios_Cakephp_Cryptography_Aes - Fatal编程技术网

php的加密问题

php的加密问题,php,ios,cakephp,cryptography,aes,Php,Ios,Cakephp,Cryptography,Aes,在服务器上进行AES256加密,在ios上进行解密。这在很长一段时间内都不起作用,但我决定在加密之前对要加密的文本进行64位编码 我不小心在base64_encode($source)周围放了大括号,这就开始工作了。因此,现在这个错误的代码可以正常工作(在ios上可以很好地解密): 正确的事情根本不起作用: $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, base64_encode($source), MCRYPT_MODE_CBC

在服务器上进行AES256加密,在ios上进行解密。这在很长一段时间内都不起作用,但我决定在加密之前对要加密的文本进行64位编码

我不小心在base64_encode($source)周围放了大括号,这就开始工作了。因此,现在这个错误的代码可以正常工作(在ios上可以很好地解密):

正确的事情根本不起作用:

$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, base64_encode($source), MCRYPT_MODE_CBC, $iv);

如果有区别的话,使用cake php。有什么不对,有什么区别?为什么大括号使事情正常工作,而没有大括号,解密就会失败?很抱歉,如果这是一个非常愚蠢的问题,但我对密码学一无所知。

您应该对纯文本进行字符编码(例如,使用UTF-8,PHP中有一个utf8编码函数),然后base64编码结果,如果您想将结果作为字符串传输

请注意,mcrypt_encrypt()的输出将与随机字节无法区分。这意味着可以输出任何字节,包括那些无效字符编码的字节(例如00h值字节或C中的EOF)。由于IV是随机的(希望如此),有时一切看起来都很完美,有时解密会因为无效字符而失败

使用加密,如果您不能完全控制(charachter)编码/解码原则(不需要太多的加密/解密),那么您可能会偶尔得到意想不到的结果—这正是编程时需要避免的事情

$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, base64_encode($source), MCRYPT_MODE_CBC, $iv);