sql >> Database >  >> RDS >> Oracle

Een sha1-hash van een rij maken in Oracle

Het pakket DBMS_CRYPTO is het juiste pakket om hashes te genereren. Het wordt standaard niet aan PUBLIC verleend, u moet het specifiek verlenen (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).

Het resultaat van deze functie is van het datatype RAW . Je kunt het opslaan in een RAW kolom of converteer het naar VARCHAR2 met behulp van de RAWTOHEX of UTL_ENCODE.BASE64_ENCODE functies.

De HASH functie is overbelast om drie datatypes als invoer te accepteren:RAW , CLOB en BLOB . Vanwege de regels van impliciete conversie, als u een VARCHAR2 . gebruikt als invoer zal Oracle proberen het om te zetten naar RAW en zal hoogstwaarschijnlijk mislukken omdat deze conversie alleen werkt met hexadecimale tekenreeksen.

Als u VARCHAR2 . gebruikt dan moet je de invoer converteren naar een binair datatype of een CLOB , bijvoorbeeld :

DECLARE
   x RAW(20);
BEGIN
   SELECT sys.dbms_crypto.hash(utl_raw.cast_to_raw(col1||col2||to_char(col3)), 
                               sys.dbms_crypto.hash_sh1) 
     INTO x 
     FROM t;
END;

u vindt aanvullende informatie in de documentatie van DBMS_CRYPTO.hash



  1. Postgresql dwingt een unieke tweerichtingscombinatie van kolommen af

  2. SQL CREATE TABLE Syntaxis - weergegeven door DBMS

  3. ProxySQL uitvoeren als Kubernetes-service

  4. Doorzoek alle kolommen van een tabel met een enkele waar-voorwaarde met een enkel trefwoord in mysql