2

我一直在尝试使用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;

感谢所有帮助。谢谢你。

编辑:我从这个讨论cipherString中了解到,当我从直接进入 PHP的 Base64 时,没有 POST,它工作得很好。有什么想法吗?

4

1 回答 1

0

代替

$cryptor = new \RNCryptor\Decryptor();

经过

$cryptor = new \RNCryptor\RNCryptor\Decryptor;
于 2017-08-26T10:21:11.760 回答