无法解密AES256加密文本

时间:2016-10-03 06:06:36

标签: 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总是给我(null)响应而不是解密字符串。

输出将是 - “heidi”

感谢。

1 个答案:

答案 0 :(得分:4)

存在一些错误和潜在错误:

  1. 您使用256位密钥(received_documents)指定AES,但提供128位(16字节)密钥。使用128位密钥指定AES或提供256位密钥。

  2. AES的块大小为16字节,提供32字节的IV,IV应为16字节。

  3. 也许你有钥匙和IV逆转。

    1. 您使用Base64编码提供加密数据,加密方法可能希望输入为AES256DecryptWithKey或NSString。长度必须是块大小的倍数,AES为16字节,提供错误长度的加密数据是您从解密方法最有可能使用的NSData获取错误的几种方法之一。

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

    3. 加密数据为32个字节(解码Base64后)。 "海迪"小于块大小,因此将填充到16个字节。这留下了一个16字节的谜。

相关问题