无法解密AES256密文

can't decrypt the AES256 encrypted text

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

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. 您使用 256 位密钥 (AES256DecryptWithKey) 指定 AES,但提供的是 128 位(16 字节)密钥。使用 128 位密钥指定 AES 或提供 256 位密钥。

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

也许您的密钥和 IV 颠倒了。

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

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

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