Obviamente, no están destinados a ser vistos, por lo tanto, buscarlos sería problemático.
Un truco que he usado en el pasado es hacer un hash de los datos encriptados antes de encriptarlos, y almacenar el hash en una columna indexada. Por supuesto, esto solo funciona si está buscando todo el valor; los valores parciales no tendrán el mismo hash.
Probablemente podría extender esto haciendo un índice de "hash" de texto completo, si fuera necesario, pero podría complicarse realmente rápido.
APÉNDICE
Se ha sugerido que agregue una nota al pie de página a mi respuesta en un debate bastante largo en el chat sobre la vulnerabilidad a los ataques del diccionario, por lo que analizaré este posible riesgo de seguridad con el enfoque anterior.
Ataque de diccionario: Un ataque de diccionario es cuando alguien realiza un hash previo de una lista de valores conocidos y compara los hash con su columna hash en la base de datos. Si pueden encontrar una coincidencia, es probable que el valor conocido sea en realidad el valor hash (no es definitivo, porque no se garantiza que los hashes sean únicos). Por lo general, esto se mitiga al mezclar el valor con una "sal" aleatoria agregada o antepuesta para que el hash no coincida con el diccionario, pero la respuesta anterior no puede usar una sal porque pierde la capacidad de búsqueda.
Este ataque es peligroso cuando se trata de cosas como las contraseñas: si crea un diccionario de hashes de contraseñas populares, puede buscar rápidamente en la tabla ese valor de hash e identificar a un usuario que tiene dicha contraseña y extraer efectivamente las credenciales para robar la identidad de ese usuario .
Es menos peligroso para los artículos con un alto grado de cardinalidad, como los números de seguro social, los números de tarjeta de crédito, los GUID, etc. (pero existen diferentes riesgos [léase: legales] asociados con el almacenamiento de estos, por lo que no estoy dispuesto a aconsejarlos para almacenarlos )
La razón de esto es para que un ataque de diccionario funcione, debe haber creado previamente un diccionario de posibles valores y sus valores hash. Podría, en teoría, construir un diccionario de todos los números de seguro social posibles (mil millones de filas, suponiendo que se eliminen todas las permutaciones de formato; múltiples docenas de billones de entradas para tarjetas de crédito) ... pero ese no suele ser el objetivo de un ataque de diccionario, y básicamente se vuelve comparable a un ataque de fuerza bruta en el que investigas sistemáticamente cada valor.
También puede buscar un SSN o número de tarjeta de crédito específico , si está tratando de hacer coincidir un SSN con una persona. Nuevamente, generalmente no es el objetivo de un ataque de diccionario, pero es posible hacerlo, por lo que si esto es un riesgo que debe evitar, mi respuesta no es una buena solución para usted.
Entonces ahí lo tienes. Al igual que con todos los datos encriptados, generalmente están encriptados por alguna razón, así que tenga en cuenta sus datos y de qué está tratando de protegerlos.