Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (E-O)

 

ENCRYPT-Funktion [Zeichenfolge]

Verschlüsselt die angegebenen Werte unter Verwendung des gelieferten Chiffrierschlüssels und gibt einen LONG BINARY-Wert zurück.

Syntax
ENCRYPT( Zeichenfolgenausdruck, Schlüssel 
[, Algorithmus  ] 
)
Algorithmus : 
'AES' 
| 'AES256' 
| 'AES_FIPS' 
| 'AES256_FIPS'
Parameter
  • Zeichenfolgenausdruck   Die zu verschlüsselnden Daten. Auch binäre Werte können an diese Funktion übergeben werden. Dieser Parameter beachtet die Groß- und Kleinschreibung, sogar in Datenbanken, die das nicht tun.

  • Schlüssel   Der zum Verschlüsseln von Zeichenfolgenausdruck verwendete Chiffrierschlüssel. Dieser Schlüssel muss auch zum Dechiffrieren des Werts verwendet werden, um den ursprünglichen Wert zu erhalten. Dieser Parameter beachtet die Groß- und Kleinschreibung, sogar in Datenbanken, die das nicht tun.

    Wie bei den meisten Kennwörtern sollte ein Schlüssel gewählt werden, der nur schwer erraten werden kann. Es wird empfohlen, dass Sie einen Wert für Ihren Schlüssel wählen, der mindestens 16 Zeichen umfasst und eine Mischung aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthält. Diesen Schlüssel benötigen Sie jedes Mal, wenn Sie die Daten entschlüsseln wollen.

    Achtung

    Bei stark verschlüsselten Datenbanken achten Sie darauf, eine Kopie des Schlüssels an einem sicheren Ort zu verwahren. Wenn Sie den Chiffrierschlüssel verlieren, gibt es keine Möglichkeit, auf die Daten zuzugreifen, auch nicht mit der Unterstützung des technischen Kundendiensts. Die Datenbank muss verworfen und eine neue Datenbank muss erstellt werden.

  • Algorithmus   Dieser optionale Parameter gibt den Algorithmus an, der bei der Chiffrierung von Zeichenfolgenausdruck verwendet werden soll. Der zur Implementierung der starken Verschlüsselung verwendete Algorithmus ist Rijndael: ein Block-Verschlüsselungsalgorithmus, der als Advanced Encryption Standard (AES ) für Block-Chiffren vom amerikanischen National Institute of Standards and Technology (NIST) ausgewählt wurde).

    Sie können einen der FIPS-Algorithmen als Algorithmus für jede Plattform festlegen, die FIPS unterstützt.

    Wenn kein Algorithmus angegeben ist, wird standardmäßig AES verwendet. Wenn der Datenbankserver mit der Serveroption "fips" gestartet wurde, wird statt dessen AES_FIPS verwendet.

Rückgabe

LONG BINARY

Bemerkungen

Der von dieser Funktion zurückgegebene LONG BINARY-Wert ist maximal 31 Byte länger als der eingegebene Zeichenfolgenausdruck. Der von dieser Funktion zurückgegebene Wert ist nicht in lesbarer Form. Sie können die DECRYPT-Funktion verwenden, um einen Zeichenfolgenausdruck zu dechiffrieren, der mit der ENCRYPT-Funktion verschlüsselt wurde. Um einen Zeichenfolgenausdruck erfolgreich zu dechiffrieren, müssen Sie denselben Chiffrierschlüssel und Algorithmus wie zum Verschlüsseln der Daten verwenden. Wenn Sie einen ungültigen Chiffrierschlüssel angeben, wird ein Fehler generiert. Ein verlorener Schlüssel führt zu nicht benutzbaren Daten, die sich nicht wiederherstellen lassen.

Wenn Sie verschlüsselte Werte in einer Tabelle speichern, sollte die Spalte BINARY oder LONG BINARY sein, damit keine Zeichensatzkonvertierung an den Daten durchgeführt wird.

Hinweis

FIPS steht nicht auf allen Plattformen zur Verfügung. Eine Liste der unterstützten Plattformen finden Sie unter [external link] http://www.sybase.com/detail?id=1062625.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   SQL Foundation-Merkmal außerhalb der Kern-SQL.

Beispiel

Der folgende Trigger verschlüsselt die user_pwd-Spalte der user_info-Tabelle. Diese Spalte enthält Benutzerkennwörter, und der Trigger wird ausgelöst, wenn der Kennwortwert geändert wird.

CREATE TRIGGER encrypt_updated_pwd
BEFORE UPDATE OF user_pwd
ON user_info
REFERENCING NEW AS new_pwd
FOR EACH ROW
BEGIN
    SET new_pwd.user_pwd=ENCRYPT( new_pwd.user_pwd, '8U3dkA' );
END;