Cosa succede quando viene usata la chiave sbagliata (3 ° parametro) in openssl_decrypt () in PHP?

3

Sto usando

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

Ho notato che quando viene data la chiave $ sbagliata, il risultato è falso. php.net dice

Return Values: The decrypted string on success or FALSE on failure.

Che cosa significa successo e fallimento? È garantito che se viene fornita la chiave errata, la funzione restituirà sempre FALSE?

In altre parole, è possibile che venga fornita una chiave errata e il risultato sia una stringa erroneamente decrittografata?

    
posta twharmon 02.11.2016 - 12:13
fonte

2 risposte

1

Ciò è probabile perché openssl_encrypt utilizza il riempimento PKCS7 per impostazione predefinita. Il FALSO probabilmente si verifica quando il padding non è valido.

È possibile ottenere il risultato errato della decrittografia se il padding viene mantenuto intatto. Dovresti utilizzare una modalità autenticata come GCM o aggiungere un HMAC.

    
risposta data 02.11.2016 - 20:21
fonte
0

Sì, è possibile che openssl_decrypt restituisca garbage quando si utilizza la chiave errata. Ecco un esempio di codice in cui ciò accade:

<?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";
?>

Questo stampa questo:

Decrypted with correct key: hello world
Decrypted with incorrect key: �O�@D�b���k��
    
risposta data 03.11.2016 - 10:27
fonte

Leggi altre domande sui tag