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:

  • Unverschlüsselter Text, der von jedem mit Lesezugriff auf die Tabelle angezeigt werden kann
  • Verschlüsselter Text, der entschlüsselt werden kann
  • Verschlüsselter Text, der niemals entschlüsselt werden kann

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. Das ist der Grund, warum längere Passwörter bevorzugt werden, 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 gerne ein Eis essen” 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 dem Bitlänge mit 128 Schlüsseln TRIPLE DES Algorithmus. Eine Passphrase ist ein Leerzeichen inklusive Passwort. Die Verwendung einer Passphrase hat den Vorteil, dass das Erinnern an einen wichtigen 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. Bei jedem anderen Datentyp, z. B. einem DATUM, müssen Sie zunächst explizit in einen Binärwert konvertieren, 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ückgabetypen:

VARBINARY mit 8.000 Bytes maximale Größe.

Implementierung:

CREATE TABLE dbo.encrypted_data
(
  [Id] INT IDENTITY(1,1) PRIMARY KEY,
  [password] VARBINARY(8000)
);
Erstellen einer Tabelle mit dem Namen “encrypted_data”

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([password])
VALUES(ENCRYPTBYPASSPHRASE('SQL SERVER 2017','This is my credit card number!'));
Einfügen von Daten in die Tabelle mit dem Namen “encrypted_data”

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.

select * from encrypted_data
Auswählen von Daten aus der Tabelle mit dem Namen “encrypted_data”

Die Ergebnismenge sieht folgendermaßen aus.

Diese Anweisung von SELECT gibt einen Wert von zurück VARBINARY sowie:

“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”

Diese Abbildung zeigt, dass der von ENCRYPTBYPASSPHRASE zurückgegebene VARBINARY-Wert nicht deterministisch ist

Es ist wichtig zu beachten, dass die VARBINARY Wert zurückgegeben von ENCRYPTBYPASSPHRASE ist nicht deterministisch. Dies bedeutet, dass selbst bei derselben Eingabe nicht jedes Mal das gleiche Ergebnis erzielt wird. Wenn wir also dieselbe SELECT-Anweisung zweimal ausführen, können wir zwei verschiedene Ausgaben erhalten.

SELECT ENCRYPTBYPASSPHRASE('SQL SERVER 2017','This is my credit card number!');
SELECT ENCRYPTBYPASSPHRASE('SQL SERVER 2017','This is my credit card number!');
SELECT ENCRYPTBYPASSPHRASE('SQL SERVER 2017','This is my credit card number!');

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 DECRYPTBYPASSPHRASE mit derselben Passphrase, mit der wir unser Passwort verschlüsselt haben.

Führen Sie den folgenden Code aus. Und Sie erhalten das Passwort mit einer langen Länge von alphanumerischen Zeichen als Ausgabe wie diese.

“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”

select id,DECRYPTBYPASSPHRASE('SQL SERVER 2017',password) as password from encrypted_data
Passwort mit “DECRYPTBYPASSPHRASE” entschlüsseln

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.

Konvertieren des entschlüsselten VARBINARY-Kennwortwerts in die Zeichenfolge mithilfe von “DECRYPTBYPASSPHRASE”

Similar Posts

Leave a Reply

Your email address will not be published.