2011-06-21 102 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文件。它不會解密.zip文件。當我打開.zip文件中的.txt文件時,它們仍然是加密的。

這是自我第一次嘗試失敗後我嘗試過的第二個加密代碼。任何幫助都會大受歡迎,或者您知道適用於Android的加密/解密代碼。

謝謝!

回答

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文件的解密,然後像上面那樣寫回返值,但是在一個循環中完成。而不是:$ zip_file1 = example1.txt,$ zip_file2 = example2.txt等。 – Jason

+0

在文件名的數組上使用'for'循環或'foreach'。 –