AES256从iOS到PHP

时间:2012-10-08 23:28:25

标签: php ios xcode encryption aes

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

..任何事都出错,但我不知道是什么。帮助...

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

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)

......仍然无效......

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

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

输出有时没什么,有时是null。

1 个答案:

答案 0 :(得分:2)

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

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

  • 您没有显示任何ObjC代码,因此很难说出那里出了什么问题。
  • 奇怪的是,您的PHP代码使用了26个字符的“密钥”。对于AES-128,它应该是16 字节。我不知道PHP的mcrypt如何处理超长密钥; ObjC代码在FixKeyLengths()中添加了零填充。
  • PHP(如您所示)和ObjC代码(默认情况下)都使用固定的IV。 非常糟糕。
    • 他们使用不同的IV,这可能是你获得不同答案的原因。

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

只需使用HTTPS。