Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从iOS到PHP的AES256_Php_Ios_Xcode_Encryption_Aes - Fatal编程技术网

从iOS到PHP的AES256

从iOS到PHP的AES256,php,ios,xcode,encryption,aes,Php,Ios,Xcode,Encryption,Aes,我正试图用Xcode对它进行解密。我真的尝试了所有的方法不同的藏书人等等 …任何事情都会出错,但我不知道该怎么办。救命啊 更新(另一种意见) 现在我试试这个: function mc_encrypt($encrypt, $key = "12345678901234567890123456789012") { $encrypt = "Affe"; $iv2 = ''; for($i=0;$i<16;$i++){ $iv2 .= "\0"; } $cip

我正试图用Xcode对它进行解密。我真的尝试了所有的方法不同的藏书人等等

…任何事情都会出错,但我不知道该怎么办。救命啊

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

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;
}

输出有时为零,有时为空。

对于大多数系统,加密应该是非确定性的——对同一明文进行两次加密几乎不会产生相同的密文。为什么?假设您在第0天的午夜向您的同谋发送“黎明攻击”,攻击失败(但您安然无恙地逃脱),并且在第1天的午夜再次发送“黎明攻击”

除此之外,让我数一数:

  • 您没有显示任何ObjC代码,因此很难判断出哪里出了问题
  • 奇怪的是,您的PHP代码使用了26个字符的“键”。AES-128应为16字节。我不知道PHP的
    mcrypt
    如何处理过长的键;ObjC代码在
    fixKeyLength()
    中添加零填充
  • PHP(如您所示)和ObjC代码(默认情况下)都使用固定的IVs非常糟糕。
    • 他们使用不同的静脉注射,这可能是你得到不同答案的原因
FWIW,我已经在各地看到了(或类似的)ObjC代码。我怎么推荐都不够;它确实不适合一般使用


只需使用HTTPS即可。

不,我认为base64_编码值必须相同。为什么一边用MCRYPT_RIJNDAEL_128(128位)加密,另一边用256位加密?我尝试了太多……现在我感到困惑了——我尝试了太多库,大多数库都是128和256大小的,在任何情况下都必须相同(或类似的)…我应该使用哪个库从这个问题的公认答案开始,它包含了一些关于php和iOS加密互操作性的指针:我已经看到了,有MCRYPT_MODE_ECB,但我需要CBC。没问题,我现在就试试这个嗨,首先:我使用相同的IV。目前这只是一个测试,以后如果一切正常的话s、 它将是随机化IV。在Obj-C代码中是相同的IV(我已将其更改为与php代码中相同的IV)。thx,但我不想使用https。我需要aes256的分辨率
NSString *key = @"12345678901234561234567890123456";
NSLog(@"decrypted: %@",[AESCrypt decrypt:[request responseString] password:key]);