Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:plsql_md5hash

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
prog:plsql_md5hash [2016/06/14 10:43]
gpipperr [11g - DBMS_CRYPTO]
prog:plsql_md5hash [2016/06/14 10:45] (aktuell)
gpipperr [PL/SQL md5 Hash erzeugen]
Zeile 1: Zeile 1:
 +=====PL/SQL md5 Hash erzeugen=====
  
 +**Aufgabe**: für die die Quersumme eines Datensatzes soll ein Hash ermittelt werden. 
 +
 +Mit Hilfe des Hashes kann beim nächsten Lauf ermittelt werden, ob sich Daten einer Zeile verändert haben und weitere Schritte beim Laden der Daten notwendig werden.
 +
 +Je nach Datenbank Version stehen verschiedene Funktionen dazu zur Verfügung.
 +
 +Falls der Hash plötzlich nicht gleich ist in zwei Läufen, auf den Zeichensatz der Umgebung achten!
 +
 +Daher hier mit "convert(v_data,'WE8ISO8859P1')" alles auf meine Ziel Umgebung explizit gecastet um hier Fehler auszuschließen!
 +
 +
 +----
 +
 +==== 10g - DBMS_OBFUSCATION_TOOLKIT====
 +
 +<code sql>
 +
 +declare
 + v_data varchar2(32001):='x';
 + v_hash varchar2(200);
 +begin
 + for i in 1..32000
 + loop
 +     v_data:= v_data || 'x';
 + end loop;
 + v_hash:=DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw(convert(v_data,'WE8ISO8859P1')));
 + dbms_output.put_line('--Info MD5 hash='||v_hash) ;
 +end;
 +/
 +</code>
 +    
 +=> https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_obtool.htm#BHBIEGHF
 +    
 +
 +----
 +
 +     
 +==== 11g - DBMS_CRYPTO ====
 +
 +Spätestens ab 11g sollte nicht mehr mit DBMS_OBFUSCATION_TOOLKIT gearbeitet werden, das das nicht mehr weiter von Oracle unterstützt wird!
 +
 +
 +<code sql>
 +declare
 + v_data varchar2(32001):='x';
 + v_hash varchar2(200);
 +begin
 + -- Test Daten 
 + for i in 1..32000
 + loop
 +     v_data:= v_data || 'x';
 + end loop;
 + 
 + v_hash:=DBMS_CRYPTO.HASH (src => UTL_RAW.cast_to_raw(convert(v_data,'WE8ISO8859P1')), typ => SYS.DBMS_CRYPTO.HASH_MD5);
 + 
 +dbms_output.put_line('--Info MD5 hash='||v_hash) ;
 +end;
 +/
 +</code>    
 +
 +=> http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_crypto.htm
 +
 +
 +
 +----
 +
 +
 +==== 12c - STANDARD_HASH ====
 +
 +<code sql>
 +select STANDARD_HASH('Gunther','MD5') from dual;
 +
 +STANDARD_HASH('GUNTHER','MD5')
 +--------------------------------
 +D59AF18A3984A94B5B94F7717BB4FAC8
 +</code>     
 +
 +Gültige Algorithmen sind SHA1, SHA256, SHA384, SHA512, und MD5. SHA1 ist der Default!
 +
 +=> https://docs.oracle.com/database/121/SQLRF/functions183.htm#SQLRF55647
 +
 +----
 + 
"Autor: Gunther Pipperr"
prog/plsql_md5hash.txt · Zuletzt geändert: 2016/06/14 10:45 von gpipperr