2011-07-10 4 views
0

に解読されるだろうiPhoneの暗号化機能は、PHPで私はPHPでサーバ上で復号化されるだろうiPhoneアプリケーションでの暗号化機能を書きたいPHPサーバー

復号化機能は、私は「この

function decrypt($input_text) 
{ 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
    $enc_key = "0e9d083f3514a69243bb8f1395d332c1"; 
    $out = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $enc_key, $input_text, MCRYPT_MODE_ECB, $iv); 
    return $out; 

} 

ですiPhoneで次の暗号化コードを使用しています

+(NSString*) encrypt:(NSString*) str key:(NSString*) key 
{ 
    NSString *key =key; 
    char keyPtr[kCCKeySizeAES256+1]; // room for terminator (unused) 
    bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding) 

     // fetch key data 
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; 
    char *dataIn = [str UTF8String]; 
    char dataOut[500];// set it acc ur data 
    bzero(dataOut, sizeof(dataOut)); 
    size_t numBytesEncrypted = 0; 
    CCCryptorStatus result = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,kCCOptionPKCS7Padding|kCCOptionECBMode, keyPtr,kCCKeySizeAES128, NULL, dataIn, strlen(dataIn), dataOut, sizeof(dataOut), &numBytesEncrypted); 

    NSString* strResult = [[[NSString alloc] initWithCString:dataOut] autorelease]; 
    return [strResult copy]; 
} 

しかし、元の結果は得られませんでした。 誰でも私が間違っているところで私を修正することができます

答えて

0

暗号化では、256ビットのAESと128ビットのキーを使用しています。これらは全く異なるアルゴリズムです。

1

試してみてください。

  • としては言っても、どちらの場合も同じキーの長さを使用します。
  • CCCrypt呼び出しでは、生成されたivは格納されず、代わりにNULLが渡されます。これを保存し、メッセージに沿ってPHPコードに転送する必要があります。そこでは、新しい、無作為のivを生成する代わりにをiPhoneで生成したものを再利用します。
  • さらに、mcryptはPKCS7Padding(PKCS5Paddingとも呼ばれることもあります)をサポートしていないため、残念ながらimplementが必要です。あなたの場合、最初にiPhoneの入力を復号化し、その後、その記事で説明したpkcs5_unpad関数を適用します。
+0

幸いなことに、あなたはその回答を投稿したはずです。 – emboss

+0

あなたの許可を得て、thx! – emboss

関連する問題