/ / Crittografia delle funzioni AES-256-CBC, ricerca mysql - php, mysql, crittografia

Funzione di crittografia AES-256-CBC, ricerca mysql - php, mysql, crittografia

Lavoro con PHP e MySQL e inserisco i dati in forma crittografata usando questa funzione in PHP:

function encrypt_decrypt($action, $string) {
$output = false;

$encrypt_method = "AES-256-CBC";
$secret_key = "This is my secret key";
$secret_iv = "This is my secret iv";

// hash
$key = hash("sha256", $secret_key);

// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr(hash("sha256", $secret_iv), 0, 16);

if( $action == "encrypt" ) {
$output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
$output = base64_encode($output);
}
else if( $action == "decrypt" ){
$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
}

return $output;
}

E ho finito per incontrare un grosso problema.

Devo cercare nella tabella e ho bisogno di usare MySQL LIKE funzione.

Come posso fare questo?

Ho cercato la documentazione e ho scoperto che MySQL ha la crittografia AES, ma sono completamente perso.

Questa funzione scritta in PHP MySQL esiste o lo fa funzionare?

risposte:

2 per risposta № 1

Quando inserisci testo cifrato in MySQL, quello

  • è stato crittografato al di fuori di MySQL
  • non conserva la somiglianza (poiché la maggior parte delle crittografie non lo sono)

non puoi eseguire a LIKE cerca su di esso.

Se si sposta la crittografia nel database, è possibile eseguire LIKE ricerche, ma preparatevi a fare un grosso successo in termini di prestazioni computazionali: fondamentalmente MySQL deve decifrare la colonna completa oltre al costo LIKE si.

L'opzione migliore è quella di cercare alcune opzioni di riprogettazione, che ti consentono semplicemente di non farlo.