Wie verschlüssle ich Passwörter mit "EncryptByPassPhrase"?
Während es gängige Praxis ist, Passwörter in einer Datenbank zu speichern, ist es im Allgemeinen nicht so üblich, sie korrekt zu speichern. Sie haben drei Möglichkeiten, wie Sie dies tun, wenn Sie ein Kennwort in einer Datenbank speichern. Sie können Ihr Passwort speichern als:
Normalerweise müssen wir unsere verschlüsselten Werte aus verschiedenen Gründen entschlüsseln. Zu diesem Zweck wird normalerweise Option 2 „Verschlüsselter Text, der entschlüsselt werden kann“ befolgt.
In diesem Artikel werden wir diskutieren, wie es geht Verschlüsselt und entschlüsseln Text, welche Fehler dabei auftreten und wie empfohlen wird.
Verschlüsselter Text, der entschlüsselt werden kann:
Jeder versteht, was ein Passwort ist, weniger Personen sind mit Passphrasen vertraut. Die Passphrase ist vergleichsweise sicherer. "Entropie" ist ein Begriff in der Theorie der Informationstechnologie, der sich auf die Zufälligkeit bezieht, die ein Passwort enthält. Je mehr Zufälligkeit ein Passwort enthält, desto schwieriger ist es normalerweise, das Passwort durch die Hacker zu brechen. Aus diesem Grund werden längere Passwörter bevorzugt, da sie wahrscheinlich mehr sind.zufällig“. Durch Hinzufügen von Wörtern zum Passwort kann die Entropie erhöht werden. Im SQL Server 2008 und darüber "ENCRYPTBYPASSPHRASE" Funktion unterstützt die Verschlüsselung von Passphrasen, wo Sie Sätze wie verwenden können “Ich würde mich über ein Eis freuen” als Ihr Passwort als Passwörter, die keine Leerzeichen unterstützen. Darüber hinaus kann es Ihr sichereres Passwort verschlüsseln.
Das "ENCRYPTBYPASSPHRASE" Funktion ermöglicht es uns, eine beliebige Zeichenfolge oder zu verschlüsseln VARBINARY Wert bis zu 7975 Bytes. Es braucht zwei Parameter, @Passphrase, und @Klartextund gibt einen Wert zurück, der die verschlüsselten Werte vom Typ enthält VARBINARY (8000).
Verschlüsseln Sie Passphraseninformationen mit dem128-Key-Bit-Länge TRIPLE DES Algorithmus. Eine Passphrase ist ein Leerzeichen inklusive Passwort. Der Vorteil der Verwendung einer Passphrase besteht darin, dass das Erinnern an einen signifikanten Satz oder eine Phrase einfacher ist als das Erinnern an eine vergleichsweise lange Zeichenfolge.
ENCRYPTBYPASSPHRASE:
"ENCRYPTBYPASSPHRASE" bietet eine schnelle und einfache Möglichkeit, SQL Server-Datenspalten zu verschlüsseln. Diese Funktion ist verfügbar in SQL Server 2008 und auf.
Syntax:
EncryptByPassPhrase (@passphrase, @cleartext)
Argumente:
@Passphrase:
Ein asymmetrischer Schlüssel wird aus einer Passphrase generiert. Dies kann varchar, char, varchar, binär, sein VARBINARY, oder NCHAR Typvariable, die eine Passphrase enthält, aus der ein symmetrischer Schlüssel erzeugt werden soll. Alle anderen Datentypen, z. B. ein DATE, müssen zuerst explizit in einen Binärwert konvertiert werden, um ein Geburtsdatum zu verschlüsseln.
@Klartext:
Ein NVARCHAR, verkohlen, varchar, binär, VARBINARY, oder NCHAR Typvariable, die den Klartext enthält. Das maximal Größe ist achttausend Bytes.
Rückgabearten:
VARBINARY mit 8,000 Bytes maximale Größe.
Implementierung:
CREATE TABLE dbo.encrypted_data ([Id] INT IDENTITY (1,1) PRIMARY KEY, [Passwort] VARBINARY (8000));
Der ID-Wert bleibt unverschlüsselt, während die Kennwortspalte vom Typ ist VARBINARY (8000), was dem Rückgabetyp des entspricht ENCRYPTBYPASSPHRASE Funktion.
INSERT INTO dbo.encrypted_data ([Passwort]) VALUES (ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dies ist meine Kreditkartennummer!'));
Es ist ersichtlich, dass der erste Parameter die Passphrase ist, die einen symmetrischen Schlüssel bereitstellt. Während der zweite Wert der Text ist, muss er verschlüsselt werden.
wähle * aus verschlüsselten_daten
Die Ergebnismenge sieht folgendermaßen aus.
Diese Anweisung von SELECT gibt einen Wert von zurückVARBINARYsowie:
"0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D"
Es ist wichtig zu beachten, dass die VARBINARY Wert zurückgegeben von ENCRYPTBYPASSPHRASE ist nicht deterministisch. Dies bedeutet, dass es nicht jedes Mal das gleiche Ergebnis erzeugt, selbst bei der gleichen Eingabe. Wenn wir dieselbe SELECT-Anweisung zweimal ausführen, können wir also zwei verschiedene Ausgaben erhalten.
SELECT ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dies ist meine Kreditkartennummer!'); SELECT ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dies ist meine Kreditkartennummer!'); SELECT ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dies ist meine Kreditkartennummer!');
Die select-Anweisung gibt Folgendes aus:
"0x010000002D69EDEEA6B486FAF38FB353CF2682EE30B450488109BD0E23B88E03CD48F72673C6A462B210D6CE38E00E9F8BA18AB7" für die erste select-Anweisung.
"0x010000007C5736E4B0F15D971D771D2D146924F741D2DB04477C882A6BAF65703F01D950B1AD01E7E4E27E89243F6A4F549170E2" für die zweite Aussage.
"0x010000009B49BEBAB4B5E510C0C2998604A005617398631C2EBFB0E3C08DDF27C2A06F447FC11BD10B416C7E58038109EBD52021" für die dritte Aussage.
DECRYPTBYPASSPHRASE:
Wir müssen es jetzt entschlüsseln können, da unser Passwort verschlüsselt wurde. Dies ist mit der Funktion ganz einfach möglich ENTSCHLÜSSELUNGBYPASSPHRASE mit derselben Passphrase, mit der wir unser Passwort verschlüsselt haben.
Führen Sie den folgenden Code aus. Und Sie erhalten das Passwort mit einigen langen alphanumerischen Zeichen als eine Ausgabe wie diese.
"0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D"
Wählen Sie id, DECRYPTBYPASSPHRASE ('SQL SERVER 2017', Kennwort) als Kennwort aus encrypted_data aus
Das ist kein Passwort. Mögen ENCRYPTBYPASSPHRASE, DECRYPTBYPASSPHRASE gibt a zurück VARBINARY Wert, der in eine Funktionszeichenfolge codiert werden soll. Durch Hinzufügen einer CONVERT- oder Cast-Funktion zu unserer SELECT-Anweisung ist dies problemlos möglich.