我使用了很多库和很多功能但无法解密。
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”
感谢。
答案 0 :(得分:4)
存在一些错误和潜在错误:
您使用256位密钥(received_documents
)指定AES,但提供128位(16字节)密钥。使用128位密钥指定AES或提供256位密钥。
AES的块大小为16字节,提供32字节的IV,IV应为16字节。
也许你有钥匙和IV逆转。
您使用Base64编码提供加密数据,加密方法可能希望输入为AES256DecryptWithKey
或NSString。长度必须是块大小的倍数,AES为16字节,提供错误长度的加密数据是您从解密方法最有可能使用的NSData
获取错误的几种方法之一。
您尚未提供预期的解密结果,这使得测试解决方案变得困难。
加密数据为32个字节(解码Base64后)。 "海迪"小于块大小,因此将填充到16个字节。这留下了一个16字节的谜。