我一直在尝试使用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,它运行得很好。有什么想法吗?
答案 0 :(得分:0)
替换
$cryptor = new \RNCryptor\Decryptor();
通过
$cryptor = new \RNCryptor\RNCryptor\Decryptor;