Offensichtlich sind sie nicht dazu gedacht, angesehen zu werden, daher wäre es problematisch, danach zu suchen.
Ein Trick, den ich in der Vergangenheit angewendet habe, besteht darin, die verschlüsselten Daten vor dem Verschlüsseln zu hashen und den Hash in einer indizierten Spalte zu speichern. Dies funktioniert natürlich nur, wenn Sie nach dem gesamten Wert suchen. Teilwerte haben nicht den gleichen Hash.
Sie könnten dies wahrscheinlich erweitern, indem Sie einen "Volltext" -Index für Hashes erstellen, wenn dies erforderlich ist, aber es könnte sehr schnell kompliziert werden.
NACHTRAG
Es wurde vorgeschlagen, meiner Antwort nach einer längeren Diskussion im Chat eine Fußnote über die Anfälligkeit für Wörterbuchangriffe hinzuzufügen. Daher werde ich dieses potenzielle Sicherheitsrisiko für den obigen Ansatz erörtern.
Wörterbuchangriff: Bei einem Wörterbuchangriff wird eine Liste bekannter Werte vorab gehasht und die Hashes mit Ihrer gehashten Spalte in der Datenbank verglichen. Wenn sie eine Übereinstimmung finden, ist es wahrscheinlich, dass der bekannte Wert tatsächlich das ist, was gehasht wird (dies ist jedoch nicht definitiv, da Hashes nicht garantiert eindeutig sind). Dies wird in der Regel durch Hashing des Werts mit einem zufälligen angehängten oder vorangestellten "salt" abgeschwächt, sodass der Hash nicht mit dem Wörterbuch übereinstimmt. Die obige Antwort kann jedoch kein salt verwenden, da Sie die Suchbarkeit verlieren.
Dieser Angriff ist gefährlich, wenn Sie sich mit Kennwörtern befassen: Wenn Sie ein Wörterbuch mit gängigen Kennwort-Hashes erstellen, können Sie die Tabelle schnell nach diesem Hash-Wert durchsuchen, einen Benutzer mit einem solchen Kennwort identifizieren und die Anmeldeinformationen effektiv extrahieren, um die Identität dieses Benutzers zu stehlen .
Es ist weniger gefährlich für Artikel mit einem hohen Grad an Kardinalität, wie zum Beispiel SSNs, Kreditkartennummern, GUIDs usw. (aber es gibt verschiedene Risiken, die mit der Aufbewahrung verbunden sind. Daher bin ich nicht geneigt, sie zu empfehlen ).
Der Grund dafür ist, dass Sie ein Wörterbuch mit möglichen Werten und deren Hashes vorab erstellt haben müssen, damit ein Wörterbuchangriff funktioniert. Theoretisch könnten Sie ein Wörterbuch aller möglichen SSNs erstellen (eine Milliarde Zeilen, vorausgesetzt, alle Formatierungspermutationen werden entfernt; mehrere Dutzend Billionen Einträge für Kreditkarten) Im Grunde wird es vergleichbar mit einem Brute-Force-Angriff, bei dem Sie jeden Wert systematisch untersuchen.
Sie können auch nach einer bestimmten SSN oder Kreditkartennummer suchen , wenn Sie versuchen, eine SSN einer Person zuzuordnen. Auch dies ist normalerweise nicht der Grund für einen Wörterbuchangriff, aber möglich. Wenn dies ein Risiko ist, das Sie vermeiden müssen, ist meine Antwort keine gute Lösung für Sie.
Da haben Sie es also. Wie bei allen verschlüsselten Daten erfolgt die Verschlüsselung in der Regel aus einem bestimmten Grund. Achten Sie daher auf Ihre Daten und darauf, wovor Sie sie schützen möchten.