PHP шифрование не работает - PullRequest
       2

PHP шифрование не работает

1 голос
/ 10 февраля 2011

Кто-нибудь знает, почему не работает этот php encrypt / decrypt?
Мы использовали это на нашем сайте, и это работало в основном. Но теперь мы сделали это сценарием командной строки, и он вообще перестал работать ...

Мы попытались закодировать ключ к utf8 и попытались удалить обрезку. Но оба не работают.

$e = new enc();
$pass = !isset($argv[1]) ? 'ill' : $argv[1];
$encPass = $e->_encrypt($pass);
$decPass = $e->_decrypt($encPass);

echo 'input: '. $pass . "\n";
echo 'encode: ' . $encPass . "\n";
echo 'decode: ' . $decPass;

class enc
{
/**
     * Encrypt data using AES256
     *
     * @param string $data The plaintext
     * @return string The encyrypted data
     */
    function _encrypt($data)
    {
        $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
        return mcrypt_encrypt(
            MCRYPT_RIJNDAEL_256, "gw2iYt26Gw", trim($data), MCRYPT_MODE_ECB,
            $iv
        );
    }

    /**
     * Decrypt data using AES256
     *
     * @param string $data The AES256 encrypted data
     * @return string The decyrypted data
     */
    function _decrypt($data)
    {
        $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
        return trim(
            mcrypt_decrypt(
                MCRYPT_RIJNDAEL_256, "gw2iYt26Gw", trim($data),
                MCRYPT_MODE_ECB, $iv
            )
        );
    }
}
?>

EDIT: Небольшое исправление для использования EncPass для расшифровки

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Вы расшифровываете простой пароль.

Do:

$decPass = $e->_decrypt($encPass);

РЕДАКТИРОВАТЬ после обновления вопроса : вам придется удалить вызов на trim() при декодировании. Это портит ваш вклад. Отмените обрезку в enc::_decrypt(), и она работает.

0 голосов
/ 10 февраля 2011

CLI-версия PHP может иметь конфигурацию, отличную от версии Apache. Это означает, что если ваша версия Apache имеет поддержку mcrypt, это не означает, что версия CLI имеет поддержку mcrypt. Проверьте с php -i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...