sql >> Databasteknik >  >> RDS >> Oracle

Gör en sha1-hash av en rad i Oracle

Paketet DBMS_CRYPTO är det korrekta paketet för att generera hash. Det är inte beviljat till PUBLIC som standard, du måste bevilja det specifikt (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).

Resultatet av denna funktion är av datatypen RAW . Du kan lagra den i en RAW kolumn eller konvertera den till VARCHAR2 med RAWTOHEX eller UTL_ENCODE.BASE64_ENCODE funktioner.

HASH Funktionen är överbelastad för att acceptera tre datatyper som indata:RAW , CLOB och BLOB . På grund av reglerna för implicit konvertering, om du använder en VARCHAR2 som indata kommer Oracle att försöka konvertera den till RAW och kommer sannolikt att misslyckas eftersom denna omvandling bara fungerar med hexadecimala strängar.

Om du använder VARCHAR2 sedan måste du konvertera indata till en binär datatyp eller en CLOB , till exempel :

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;

du hittar ytterligare information i dokumentationen för DBMS_CRYPTO.hash



  1. Databastjänster på AWS och Oracle Cloud Platform

  2. SQLite - Skapa en relation

  3. SQL Sentry är nu SentryOne

  4. Hur Acosh() fungerar i PostgreSQL