Ich habe eine Anforderung, die Mitgliedsnummer des Kunden in unserer Datenbank zu verschlüsseln. Also okay, wir benutzen MS SQL Server, ich dachte, ich benutze encryptbypassphrase, ändere jeden Ort, der dieses Feld schreibt zu verschlüsseln und jeden Ort, an dem es zu entschlüsseln ist, etc.beitreten auf verschlüsseltes Feld
Ausgenommen ... gibt es Orte in der DB, wo das Feld verwendet wird, um mehrere Datensätze zu verknüpfen. Ich dachte, kein Problem, ich ändere nur den Beitritt von "Join blahblah auf a.member_number = b.member_number", um "blahblah auf a.member_number_encrypted = b.member_number_encrypted" beizutreten. Aber das funktioniert nicht, weil ich entdeckt habe, dass wenn ich den gleichen Wert zweimal verschlüssle, ich nicht den gleichen verschlüsselten Wert bekomme. Ich schätze, es gibt etwas Salz darin oder so. Und ich möchte nicht sagen: "Verbinde blahblah mit decryptbypassphrase (@pw, a.member_number_encrypted) = dsecryptbypassphrase (@pw, b.member_number_encrypted), denn das würde einen Index-Lookup in eine Voll-Datei-Suche verwandeln. Ich dachte, es würde hässlich zu sein, um auf den viel größeren verschlüsselten Wert zu indizieren, aber ...
Also ... Gibt es eine Möglichkeit, verschlüsselnbypassphrase zu zwingen, immer die gleiche Eingabe für den gleichen Ausgang zu verschlüsseln? Oder heißt das, dass es ist? einfach nicht praktisch in den meisten Fällen auf einem verschlüsselten Bereich?
beizutreten oder bin ich etwas fehlt?
"Was Sie suchen ist deterministisch-Verschlüsselung." Ja. "Sie verwenden MS SQL Server 2016" Leider bin ich nicht. Ich habe 2014 sp2-gdr. – Jay
@Jay Siehe aktualisierte Antwort für Zeiger –