php - 加密解密有什么问题?

标签 php ios cocoa-touch encryption aes

在服务器端用php加密数据并在iOS中解密失败。

在php的服务器上,它看起来像这样(仅用于测试):

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, "a16byteslongkey!a16byteslongkey!", "iphone", MCRYPT_MODE_CBC, $iv);
$base64encoded_ciphertext = base64_encode($ciphertext);
return $base64encoded_ciphertext;

在iOS中:
 NSData *decrypted = [[RNCryptor AES256Cryptor] decryptData:[QSStrings decodeBase64WithString: text] password:@"a16byteslongkey!a16byteslongkey!" error:&error];

NSLog(@"errro - %@", [error description]);

NSString *decryptedString = [[[NSString alloc] initWithData: decrypted encoding: NSUTF8StringEncoding] autorelease];

错误说明是:
Error Domain=net.robnapier.RNCryptManager Code=2 "Unknown header" UserInfo=0x8582e10 {NSLocalizedDescription=Unknown header}

使用RNCryptor:https://github.com/rnapier/RNCryptor

在加密器中抛出错误的地方:
  if (![header isEqualToData:[NSData dataWithBytes:AES128CryptorHeader length:sizeof(AES128CryptorHeader)]]) {
*error = [NSError errorWithDomain:kRNCryptorErrorDomain code:kRNCryptorUnknownHeader
                         userInfo:[NSDictionary dictionaryWithObject:NSLocalizedString(@"Unknown header", @"Unknown header") forKey:NSLocalizedDescriptionKey]];
return NO;

}

这有什么问题呢?

最佳答案

只要阅读RNCryptor的站点,我相信它是完整的消息输入输出加密器。如果您查看其Wiki上的数据格式

https://github.com/rnapier/RNCryptor/wiki/Data-Format

我相信他们期望到ENCRYPT的数据没有头,但是如果您正在解密,则它期望使用他们的加密器对数据进行加密,从而增加头和hmac。

如果我是对的,那么服务器端汇总的数据就是RNCryptor希望看到的完整消息的密文部分!

关于php - 加密解密有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11262539/

相关文章:

php - 无法打开所需的database.inc(尝试使用drupal)

IOS 应用程序加载器显示捆绑错误,带有 armv7s 和 armv7

objective-c - 无法在 iOS 上使用自定义@protocol

ios - 如何测试键盘是否覆盖了 UITableView 中的 UITextField?

php - Laravel - 使用身份验证限制某些下载

PHP OpenDir 与 array_rand

php - 如何在 PHP 中将上传的视频文件编码为 .flv 格式

objective-c - 带有包含 NSManagedObjectID 的 NSPredicate 的 NSFetchRequest 是否可以安全地跨线程边界传递?

ios - 如何将 CATransform3DTranslate 转换为 CGAffineTransform,以便它可以模仿轮播 View

iphone - 在横向模式下报告不正确的边界