OpenSSL шифрования / дешифрования php - PullRequest
0 голосов
/ 26 июня 2018

Я делаю шифрование, которое работает хорошо, но тем же методом я делаю расшифровку. Я получаю пустую строку, но не получаю строку расшифровки.Я использую метод AES-256-ECB , а ключ шестнадцатеричный, поэтому я передаю как

$ key = pack ('H *', 'xxxxxxxxxxxx');

Шифрование идет правильно, но дешифрование не работает.Пожалуйста, помогите мне, что я делаю неправильно.

function encrypt(string $data, string $key, string $method): string
{
    $ivSize = openssl_cipher_iv_length($method);
        $iv = openssl_random_pseudo_bytes($ivSize);
        $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
    $encrypted = strtoupper(implode(null, unpack('H*', $encrypted)));
    return $encrypted;
}

function decrypt(string $data, string $key, string $method): string
{

    $data = pack('H*', $data);
    $ivSize = openssl_cipher_iv_length($method);  
        $iv = $iv = openssl_random_pseudo_bytes($ivSize);
    $decrypted = openssl_decrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv); 
    return trim($decrypted);
}

1 Ответ

0 голосов
/ 26 июня 2018

Ваши функции отлично работают для меня, используя следующий код:

$key = pack('H*','aaaaaaaaaaaaa');
$method = 'aes-256-ecb';
$encrypted = encrypt('test string', $key, $method);
$decrypted = decrypt($encrypted, $key.'a', $method);

echo $decrypted; // Output: 'test string'

Поскольку вы получаете пустую строку для расшифровки, это означает, что вы получили неверный ключ или зашифрованный текст, когдадешифрования.Убедитесь, что ключ, который вы используете для дешифрования, в точности совпадает с ключом, который вы используете для шифрования, включая любые манипуляции с ним, такие как pack() функция, которую вы здесь сделали.Разница даже в один байт, и вы не сможете расшифровать.

Также убедитесь, что ни ключ, ни зашифрованный текст не усекаются при сохранении.Если при использовании базы данных тип столбца слишком мал для того, что вы пытаетесь сохранить, значения будут усечены.

...