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)

 

HASH-Funktion [Zeichenfolge]

Gibt den angegebenen Wert in einem Hash-Format zurück

Syntax
HASH(Zeichenfolgenausdruck[,,Algorithmus ] ) )
Parameter
  • Zeichenfolgenausdruck   Der Wert, der im Hash-Format zurückgegeben werden soll. Dieser Parameter beachtet die Groß- und Kleinschreibung, sogar in Datenbanken, die das nicht tun.

  • Algorithmus   Der für den Hash-Vorgang zu verwendende Algorithmus. Mögliche Werte sind: MD5, SHA1, SHA1_FIPS, SHA256, SHA256_FIPS. Standardmäßig wird der MD5-Algorithmus verwendet.

    Hinweis

    Die FIPS-Algorithmen sind nur für Systeme bestimmt, die FIPS 140-2-zertifizierte Software von Certicom verwenden.

Rückgabe

VARCHAR

Bemerkungen

Wenn die Hash-Funktion verwendet wird, wird der Wert in eine Bytesequenz konvertiert, die für jeden Wert, der an die Funktion übergeben wird, eindeutig ist.

Wenn der Server mit der Option -fips gestartet wurde, kann sich der verwendete Algorithmus oder das Verhalten ändern, und zwar folgendermaßen:

  • SHA1_FIPS wird verwendet, wenn SHA1 angegeben ist.

  • SHA256_FIPS wird verwendet, wenn SHA256 angegeben ist.

  • Ein Fehler wird zurückgegeben, wenn MD5 angegeben ist.

Es folgen die Rückgabetypen, abhängig vom verwendeten Algorithmus:

Achtung

Jeder Algorithmus ist ein Einweg-Hash. Es ist nicht möglich, den ursprünglichen Wert anhand des Hash-Werts wieder herzustellen.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Das folgende Beispiel erstellt eine Tabelle namens user_info, um Daten über die Benutzer einer Anwendung, wie Benutzer-ID und Kennwort, zu speichern. In die Tabelle wird auch eine Zeile eingefügt. Das Kennwort wird mit der HASH-Funktion und dem SHA256-Algorithmus verarbeitet. Das Speichern von Hash-Kennwörten auf diese Weise kann nützlich sein, wenn Sie Kennwörter nicht in lesbarer Form speichern wollen, aber eine externe Anwendung haben, die Kennwörter vergleicht.

CREATE TABLE user_info ( 
  employee_id   INTEGER NOT NULL PRIMARY KEY,
  user_name CHAR(80),
  user_pwd CHAR(80) );
INSERT INTO user_info 
  VALUES ( '1', 's_phillips', HASH( 'mypass', 'SHA256' ) );