【问题标题】:AES256 from iOS to PHPAES256 从 iOS 到 PHP
【发布时间】:2012-10-08 23:28:25
【问题描述】:

我正在尝试在 Xcode 中使用 AES-Crypt-Objc 对其进行解密。我已经尝试了所有的东西..不同的 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 现在仍然为零)

...仍然没有任何效果...

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

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

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

【问题讨论】:

  • 不,我认为 base64_encode 值必须相同。
  • 你为什么在一侧使用 MCRYPT_RIJNDAEL_128(128 位)和另一端使用 256 位进行加密?
  • 我尝试了很多..以至于我现在很困惑 - 我尝试了很多图书馆,其中大多数,我读过任何关于尺寸 128 和 256 的东西,在任何情况下它都必须是相同(或类似)...我应该使用哪个库
  • 从这个 SO 问题接受的答案开始,它包含一些关于 php 和 iOS 加密互操作性的指示:stackoverflow.com/questions/4455104/…
  • 我已经看过了,有 MCRYPT_MODE_ECB 但我需要 CBC..没问题我现在就试试这个

标签: php ios xcode encryption aes


【解决方案1】:

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

除此之外,让我数一数:

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

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

只需使用 HTTPS。

【讨论】:

  • 嗨,首先:我使用相同的 IV。目前它只是一个测试,稍后如果一切正常,它将被随机 IV。 Obj-C 代码中的 IV 相同(我已将其更改为与 php 代码中相同的 IV)。
  • 谢谢,但我不想使用 https。我需要 aes256 的分辨率
猜你喜欢
  • 2014-08-01
  • 2023-03-30
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多