2016-07-04 9 views
0

Die Daten in meiner Spalte, lib_question, werden mit AES_ENCRYPT verschlüsselt. Jetzt möchte ich Datensätze aus der Tabelle suchen, wo diese Spalte wie ein bestimmter Eintrag vom Benutzer eingegeben wird. Ich habe versucht, diese aber es funktioniert nicht:Wie führe ich eine LIKE-Suche mit verschlüsselten Daten durch?

select id_question 
from question 
where lib_question like CONCAT('%',AES_ENCRYPT('contribuer', HEX('AVtr34ENMG')),'%'); 

Ich erinnere mich, das Wort contribuer in das Feld eingeben, um die lib_question Spalte durch die Anwendung entspricht.

Also, wie die LIKE-Anweisung zu machen?

Antwort

2

AES_ENCRYPT fügt Padding um die Eingabezeichenfolge (https://dev.mysql.com/doc/refman/5.6/en/encryption-functions.html#function_aes-encrypt) hinzu, was bedeutet, dass Ihr Vergleich niemals mit den verschlüsselten Zeichenfolgen übereinstimmt.

Haben Sie versucht, die entschlüsselten Werte zu vergleichen? Das sollte zuverlässiger sein.

select id_question 
from question 
where AES_DECRYPT(lib_question, HEX('AVtr34ENMG')) like '%contribuer%'; 
-1

Sie können verschlüsselten Text nicht ohne vorherige Dekodierung durchsuchen, aber Sie können die gesuchten Wörter verschlüsseln und ähnliche Verschlüsselungen finden. Theoretisch könnte das gemacht werden

Verwandte Themen