代码之家  ›  专栏  ›  技术社区  ›  Nirav Kotecha

无法解密AES256加密文本

  •  0
  • Nirav Kotecha  · 技术社区  · 8 年前

    我使用了这么多库和函数,但无法解密。

    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 回复  |  直到 8 年前
        1
  •  4
  •   zaph    8 年前

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

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

    也许你把钥匙和静脉注射颠倒了。

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

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