1

我正在尝试使用AES-Crypt-Objc在 Xcode 中对其进行解密。我已经尝试过所有东西......不同的libariers等等......

..anyhting 出错了,但我不知道是什么问题。帮助...

更新(另一种意见) 现在我试试这个:

function mc_encrypt($encrypt, $key = "12345678901234567890123456789012") 
{
    $encrypt = "Affe";
    $iv2 = ''; 
    for($i=0;$i<16;$i++){ $iv2 .= "\0";  }

    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, ($encrypt), MCRYPT_MODE_CBC,$iv2);
    $encode= base64_encode($ciphertext);

    return $encode;
}

在 Obj-C 中,我也使用相同的框架(IV 现在仍然为零)

......仍然没有任何工作......

AND 一些 Objc-C 代码:注意:request responseString 是来自上面的字符串。

NSString *key = @"12345678901234561234567890123456";
NSLog(@"decrypted: %@",[AESCrypt decrypt:[request responseString] password:key]);

输出有时什么都没有,有时为空。

4

1 回答 1

2

对于大多数系统,加密应该是非确定性的——两次加密相同的明文几乎不应该给出相同的密文。为什么?假设您在第 0 天的午夜向您的同伙发送“黎明攻击”,攻击失败(但您毫发无伤),并且在第 1 天的午夜,您再次发送“黎明攻击”......

除此之外,让我数一下方法:

  • 您没有显示任何 ObjC 代码,因此很难判断那里出了什么问题。
  • 奇怪的是,您的 PHP 代码使用 26 个字符的“键”。对于 AES-128,它应该是 16个字节。我不知道 PHP 是如何mcrypt处理超长键的;ObjC 代码在FixKeyLengths().
  • PHP(如您所示)和 ObjC 代码(默认情况下)都使用固定的 IV。很坏。
    • 他们使用不同的 IV,这可能就是您得到不同答案的原因。

FWIW,我到处都看到了那个(或类似的)ObjC 代码。我不能不推荐它。它确实不适合一般用途。

只需使用 HTTPS。

于 2012-10-09T03:08:48.023 回答