Bonjour,
J'aimerais avoir quelques précisions sur les champs BLOB, les index et la recherche sur un champ BLOB de noms cryptés via la fonction AES_ENCRYPT
Pour info, voilà la requête d'insertion dans la table. Le champ 'nom' peut contenir 50 caractères max avant cryptage.
Le problème. Cette table va contenir en 20 et 30 millions d'enregistrements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO sys_user (iduser, ID) VALUES ('$iduser', AES_ENCRYPT('$nom','$mdp'))
Comment optimiser la recherche d'un nom ?
Vaut-il mieux comparer le nom non crypté avec la valeur préalablement décryptée dans la base (ID) :
ou crypter le nom et le comparé avec la valeur cryptée dans la base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT AES_DECRYPT(ID,'$mdp') AS nom, FROM sys_user WHERE AES_DECRYPT(ID,'$mdp') LIKE '$nom'
Mais je ne suis pas sûr qu'une comparaison sur un portion seulement du nom soit alors possible dans ce cas (LIKE AES_ENCRYPT($nom,'$mdp')%) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT AES_DECRYPT(ID,'$mdp') AS nom, FROM sys_user WHERE ID LIKE AES_ENCRYPT($nom,'$mdp')
Comment optimiser avec un index ?
Voilà, j'espère avoir été clair dans ma demande. Merci par avance de vos réponses.
PS : priorité à la vitesse de réponse bien entendu.
Partager