Код шифрования с Android на PHP - PullRequest
1 голос
/ 21 июня 2011

Это код, который используется на Android для шифрования ZIP-файла.

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; 

Кажется, это не работает.Он прекрасно зашифрует файл .zip на Android, но когда я вызываю функцию в PHP

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

, он не расшифровывает файл .zip.Когда я открываю файлы .txt в файле .zip, они все еще зашифрованы.

Это второй код шифрования, который я пробовал, поскольку моя первая попытка не сработала.Буду признателен за любую помощь, или если вы знаете код шифрования / дешифрования, который работает с Android на PHP.

Спасибо !!

1 Ответ

2 голосов
/ 21 июня 2011

Это ничего не делает:

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...