Ovviamente non sono fatti per essere visti, quindi cercarli sarebbe problematico.
Un trucco che ho usato in passato è l'hash dei dati crittografati prima di crittografarli e archiviare l'hash in una colonna indicizzata. Naturalmente, questo funziona solo se stai cercando l'intero valore; i valori parziali non avranno lo stesso hash.
Probabilmente potresti estenderlo creando un indice di hash "full text", se necessario, ma potrebbe complicarsi molto velocemente.
ADDENDUM
Mi è stato suggerito di aggiungere una nota a piè di pagina alla mia risposta per un dibattito abbastanza lungo in chat sulla vulnerabilità agli attacchi del dizionario, quindi discuterò questo potenziale rischio per la sicurezza con l'approccio di cui sopra.
Attacco a dizionario: un attacco a dizionario si verifica quando qualcuno esegue il pre-hash di un elenco di valori noti e confronta gli hash con la colonna con hash nel database. Se riescono a trovare una corrispondenza, è probabile che il valore noto sia effettivamente ciò che viene sottoposto a hash (non è tuttavia definito, poiché gli hash non sono garantiti come unici). Questo di solito è mitigato dall'hash del valore con un "salt" casuale aggiunto o anteposto in modo che l'hash non corrisponda al dizionario, ma la risposta sopra non può usare un salt perché perdi la ricerca.
Questo attacco è pericoloso quando si tratta di cose come le password: se si crea un dizionario di hash di password popolari, è possibile quindi cercare rapidamente nella tabella quel valore di hash e identificare un utente che dispone di tale password ed estrarre efficacemente le credenziali per rubare l'identità dell'utente .
È meno pericoloso per gli articoli con un alto grado di cardinalità, come SSN, numeri di carta di credito, GUID, ecc. (Ma ci sono diversi rischi [leggi: legali] associati alla loro conservazione, quindi non sono propenso a consigliarli per conservarli ).
Il motivo di ciò è perché un attacco del dizionario funzioni, è necessario avere pre-costruito un dizionario di possibili valori e dei loro hash. In teoria, potresti costruire un dizionario di tutti i possibili SSN (un miliardo di righe, supponendo che tutte le permutazioni di formattazione siano rimosse; più dozzine di trilioni di voci per le carte di credito) ... ma di solito non è questo il punto di un attacco del dizionario, e fondamentalmente diventa paragonabile a un attacco a forza bruta in cui si sta studiando sistematicamente ogni valore.
Puoi anche cercare un SSN specifico o un numero di carta di credito, se stai cercando di abbinare un SSN a una persona. Ancora una volta, di solito non è il punto di un attacco del dizionario, ma è possibile farlo, quindi se questo è un rischio che devi evitare, la mia risposta non è una buona soluzione per te.
Così il gioco è fatto. Come per tutti i dati crittografati, di solito è crittografato per un motivo, quindi sii consapevole dei tuoi dati e da cosa stai cercando di proteggerli.