RNCryptor在iOS中加密,在PHP中解密

时间:2014-12-08 03:58:07

标签: php ios encryption aes rncryptor

我一直在尝试使用RNCryptor加密iOS中的字符串,并让应用程序将加密后的字符串发布到服务器上,该服务器将解密PHP中的字符串。

在PHP脚本返回空字符串结束之前,所有内容似乎都正常工作(没有错误消息)。

我认为问题出在iOS代码中,因为当我尝试解密示例decrypt.php中的字符串时,它运行正常。

的iOS:

NSString *key = @"myPassword";
NSString *string = @"Secret String";
NSData *plain = [string dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipherData = [RNEncryptor encryptData:plain withSettings:kRNCryptorAES256Settings password:key error:&error];
NSString *cipherString = [[NSString alloc] initWithData:[cipherData base64EncodedDataWithOptions:0] encoding:NSUTF8StringEncoding];

然后我将cipherString发布到以下PHP脚本

PHP:

require 'autoload.php';
$password = "myPassword";
$base64Encrypted = $_POST['data'];
$cryptor = new \RNCryptor\Decryptor();
$plaintext = $cryptor->decrypt($base64Encrypted, $password);
echo $plaintext;

感谢所有帮助。谢谢。

编辑:我从this discussion了解到,当我从cipherString直接进入Base64到PHP时,没有POST,它运行得很好。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

替换

$cryptor = new \RNCryptor\Decryptor();

通过

$cryptor = new \RNCryptor\RNCryptor\Decryptor;