2011-06-21 21 views
1

これはAndroid上で.zipファイルを暗号化するために使用されるコードです。AndroidからPHPへの暗号化コード

function encryptString($RAWDATA) { 
    $key = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; 
    // encrypt string, use rijndael-128 also for 256bit key, this is obvious 
    $td = mcrypt_module_open('rijndael-128', '', 'ecb', ''); 
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
    mcrypt_generic_init($td, $key, $iv); 
    $encrypted_string = mcrypt_generic($td, strlen($RAWDATA) . '|' . 
        $RAWDATA); 
    mcrypt_generic_deinit($td); 
    mcrypt_module_close($td); 
    // base-64 encode 
    return base64_encode($encrypted_string); 
} 

これはPHPが自分のサーバーに送信されると、同じ.zipファイルを復号化するためのコードです。

function decryptString($ENCRYPTEDDATA) { 
    $key = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";  
     // base-64 decode 
     $encrypted_string = base64_decode($ENCRYPTEDDATA); 
     // decrypt string 
     $td = mcrypt_module_open('rijndael-256', '', 'ecb', ''); 
     $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
     mcrypt_generic_init($td, $key, $iv); 
     $returned_string = mdecrypt_generic($td, $encrypted_string); 
     unset($encrypted_string); 
     list($length, $original_string) = explode('|', $returned_string, 2); 
     unset($returned_string); 
     $original_string = substr($original_string, 0, $length); 
     mcrypt_generic_deinit($td); 
     mcrypt_module_close($td); 
     return $original_string; 

動作していないようです。これは、Android上でうまく.zipファイルを暗号化しますが、私はPHP

$zip_file = $path . $strFileName; 
        decryptString($zip_file); 

で関数を呼び出すときには、.zipファイルを復号化しません。 .zipファイル内の.txtファイルを開くと、まだ暗号化されています。

これは私の最初の試みがうまくいかなかったので私が試みた2番目の暗号化コードです。どんな助けも大いに評価されるでしょう、あるいはあなたがAndroid to PHPで動作する暗号化/復号化コードを知っているなら。

ありがとうございます!

答えて

2

これは何もしません:

$zip_file = $path . $strFileName; 
decryptString($zip_file); 

あなたはdecryptString、ないファイル名に実際のファイルの内容で送信する必要があります。次に、関数からの戻り値をキャッチして、ファイルに書き戻す必要があります。次のような方法を試してみてください:

$zip_file = $path . $strFileName; 
$decrypted = decryptString(file_get_contents($zip_file)); 
file_put_contents($zip_file, $decrypted); 
+0

恐ろしいですね!どうもありがとうございます。私は笑を除いてすべてを試していた。私の次のハードルはこれです:私は5つの.txtファイルを解読したいと言っています。解読したすべての5つの.txtファイルのcontectを読み込んで上記のように戻り値を書き込む方法はありますか?ループで実行します。代わりに:$ zip_file1 = example1.txt、$ zip_file2 = example2.txtなどの処理を行います。 – Jason

+0

ファイル名を持つ配列に対して 'for'ループまたは' foreach'を使います。 –