¿Qué sucede cuando se usa la clave incorrecta (tercer parámetro) en openssl_decrypt () en PHP?

3

Estoy usando

openssl_decrypt($encrypted_content, 'aes-256-cbc', $key, 0, $iv)

Me he dado cuenta de que cuando se da la clave $ incorrecta, el resultado es falso. php.net dice

  

Valores de retorno: la cadena descifrada en caso de éxito o FALSE en caso de error.

¿Qué significa éxito y fracaso? ¿Se garantiza que si se proporciona una clave incorrecta, la función siempre devolverá FALSE?

En otras palabras, ¿es posible que se proporcione una clave incorrecta y que el resultado sea una cadena descifrada erróneamente?

    
pregunta twharmon 02.11.2016 - 12:13
fuente

2 respuestas

1

Esto es probable porque openssl_encrypt usa el relleno PKCS7 de forma predeterminada. El FALSO probablemente ocurre cuando el relleno no es válido.

Es posible obtener el resultado incorrecto de descifrado si el relleno se mantiene intacto. Debe usar un modo autenticado como GCM o adjuntar un HMAC.

    
respondido por el Luke Park 02.11.2016 - 20:21
fuente
0

Sí, es posible que openssl_decrypt devuelva basura cuando se usa la clave incorrecta. Aquí hay un ejemplo de código donde sucede:

<?php
# Encrypt some text.
$iv = "underconsumption";
$key = "secret";
$plaintext = "hello world";
$encrypted_content = openssl_encrypt($plaintext, 'aes-256-cbc', $key, 0, $iv);

# Try decrypting with correct key.
$result = openssl_decrypt($encrypted_content, 'aes-256-cbc', $key, 0, $iv);
echo "Decrypted with correct key: $result\n";

# Using the wrong key sometimes results in garbage.
$key = 'saacua';
$result = openssl_decrypt($encrypted_content, 'aes-256-cbc', $key, 0, $iv);
echo "Decrypted with incorrect key: $result\n";
?>

Esto imprime esto:

Decrypted with correct key: hello world
Decrypted with incorrect key: �O�@D�b���k��
    
respondido por el Sjoerd 03.11.2016 - 10:27
fuente

Lea otras preguntas en las etiquetas