我用了那么多库,那么多函数,就是解不开。
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”
谢谢。
最佳答案
有一些错误和潜在的错误:
您指定的 AES 具有 256 位 key (
AES256DecryptWithKey
),但提供的是 128 位(16 字节) key 。使用 128 位 key 指定 AES 或提供 256 位 key 。AES 的 block 大小为 16 字节,您提供 32 字节的 IV,IV 应该是 16 字节。
也许您将 key 和 IV 颠倒了。
您正在以 Base64 编码提供加密数据,加密方法可能希望输入为
NSData
或 NSString。长度必须是 block 大小的倍数,对于 AES 为 16 字节,提供错误长度的加密数据是您从CCCrypt
中获得错误的少数几种方法之一,其中解密方法是最可能正在使用。您没有提供预期的解密结果,这使得解决方案的测试变得困难。
加密数据为32字节(Base64解码后)。 “heidi”小于 block 大小,因此将填充到 16 字节。这留下了一个神秘的 16 字节。
关于ios - 无法解密AES256密文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39825400/