2011-06-21 64 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'。 –