Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
PHP加密和objective-c解密_Php_Objective C_Encryption - Fatal编程技术网

PHP加密和objective-c解密

PHP加密和objective-c解密,php,objective-c,encryption,Php,Objective C,Encryption,我必须在php服务器上生成加密密钥,并将其发送到ipad应用程序进行解密 我在php服务器端所做的工作: $iv = mcrypt_create_iv(32); $privatEencryptKey = "1111"; $data = "2222"; $encryptedData = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateEncryptKey, base64_encode($data), MCRYPT_MODE_C

我必须在php服务器上生成加密密钥,并将其发送到ipad应用程序进行解密

我在php服务器端所做的工作:

    $iv = mcrypt_create_iv(32);
    $privatEencryptKey = "1111";
    $data = "2222";
    $encryptedData = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateEncryptKey, base64_encode($data), MCRYPT_MODE_CBC, $iv);
    $decryptedData = base64_decode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateEncryptkey, $encryptedData, MCRYPT_MODE_CBC, $iv));

    echo base64_encode($encryptedData); //output = WT7LorzZ1EQo2BeWxawW3Q==
    echo $decryptedData; // output = 2222
    echo base64_encode($iv); // output = fZTj4BxWSdCYQW/scUHvx9QoiTNXmxNrGWb/n7eFkR4= 
在xcode中,我导入了sercurity.framwork,并为base64(编码和解码)添加了第三方,我还使用了(CommonCryptor.h),下面是我的代码:

+ (NSData *)doCipher:(NSData *)dataIn
              iv:(NSData *)iv
             key:(NSData *)symmetricKey
         context:(CCOperation)encryptOrDecrypt{
         CCCryptorStatus ccStatus   = kCCSuccess;
         size_t          cryptBytes = 0;    // Number of bytes moved to buffer.
         NSMutableData  *dataOut    = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128];

         ccStatus = CCCrypt( encryptOrDecrypt,
                   kCCAlgorithmAES128,
                   0,
                   symmetricKey.bytes,
                   kCCKeySizeAES128,
                   iv.bytes,
                   dataIn.bytes,
                   dataIn.length,
                   dataOut.mutableBytes,
                   dataOut.length,
                   &cryptBytes);

        if (ccStatus != kCCSuccess) {
              NSLog(@"CCCrypt status: %d", ccStatus);
        }

      dataOut.length = cryptBytes;
      return dataOut;
  }

  + (void) testCipher{
        NSData *dataIn = [[@"WT7LorzZ1EQo2BeWxawW3Q==" base64DecodedString] dataUsingEncoding:NSUTF8StringEncoding];
        NSData *key = [@"1111" dataUsingEncoding:NSUTF8StringEncoding];
        NSData *iv = [[@"fZTj4BxWSdCYQW/scUHvx9QoiTNXmxNrGWb/n7eFkR4=" base64DecodedString] dataUsingEncoding:NSUTF8StringEncoding];

        NSData *dataOut = [Utils doCipher:dataIn iv:iv key:key context:kCCDecrypt];
        NSString* strOut = [[[NSString alloc] initWithData:dataOut
                                          encoding:NSUTF8StringEncoding] base64DecodedString];
        NSLog(@"%@", strOut);
  }
我得到了strOut的零分(

请帮忙

  • 您应该为AES-128使用16字节密钥和IV。Mcrypt_加密否则会将其填充为零
  • 最有可能的情况是,您应该手动将PKCS#5填充添加到输入中,因为mcrypt#u使用零加密pads数据,这不是常见的做法

  • 按以下顺序提供:加密的Base64数据、解密的Base64数据、解密的字符串。提供的密钥是32位,但AES128需要128位。iv是256位,但只需要128位。谢谢Zaph,抱歉,但我是密码学领域的新手……如何生成128位密钥和iv(在PHP中用于加密)并将生成的密钥传递到objective c中,以重用它们进行解密???…我所做的是将64 key和iv echo encoded64发送到我的test page.php,并将值复制粘贴到objective c类中,解码64这些值,并在将其转换为NSData对象后将其传递给CCCrypt函数…对吗?我使用了RNCryptor iOS库,并且它工作正常给我的