ios - 无法解密AES256密文

标签 ios objective-c iphone encryption aes

我用了那么多库,那么多函数,就是解不开。

NSString *key = @"innoways21897016";
NSString *iv = @"61079821218970166107982121897016";
NSString *encrypted = @"iG5lIZKGevzV3UfhcqOzgA/xwKhAKjB75G1L4Z1s/RU=";
NSData *data = [encrypted dataUsingEncoding:NSUTF8StringEncoding];
NSData *dataDecrypted = [data AES256DecryptWithKey:key andIV:iv];
NSLog(@"decrypt data = %@",dataDecrypted);
NSString *receivedDataDecryptString = [[NSString alloc]initWithData:dataDecrypted encoding:NSUTF8StringEncoding];
NSLog(@"decrypt string = %@",receivedDataDecryptString);

receivedDataDecryptString 总是给我(空)响应而不是解密字符串。

输出将是 - “heidi”

谢谢。

最佳答案

有一些错误和潜在的错误:

  1. 您指定的 AES 具有 256 位 key (AES256DecryptWithKey),但提供的是 128 位(16 字节) key 。使用 128 位 key 指定 AES 或提供 256 位 key 。

  2. AES 的 block 大小为 16 字节,您提供 32 字节的 IV,IV 应该是 16 字节。

也许您将 key 和 IV 颠倒了。

  1. 您正在以 Base64 编码提供加密数据,加密方法可能希望输入为 NSData 或 NSString。长度必须是 block 大小的倍数,对于 AES 为 16 字节,提供错误长度的加密数据是您从 CCCrypt 中获得错误的少数几种方法之一,其中解密方法是最可能正在使用。

  2. 您没有提供预期的解密结果,这使得解决方案的测试变得困难。

  3. 加密数据为32字节(Base64解码后)。 “heidi”小于 block 大小,因此将填充到 16 字节。这留下了一个神秘的 16 字节。

关于ios - 无法解密AES256密文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39825400/

相关文章:

iphone - 使用 asihttp 请求在表中发出带有进度条的多个请求

ios - 如何在 iOS 7 上嵌入 youtube 视频

objective-c - Objective C - 此方法和代码行的含义?

ios - 应用内购买恢复按钮

ios - 计算类的对象数

objective-c - 在Cocoa应用程序运行后将代码注入(inject)到它们中,可能吗?

ios - NSDictionary 键/值概念

iphone - 设置包中的只读字符串

iphone - 应用程序加载器错误 (iPhone)

ios - 使用restkit为预加载的数据库提供种子