sql >> Databáze >  >> RDS >> Oracle

Vytvoření sha1-hash řádku v Oracle

Balíček DBMS_CRYPTO je správný balíček pro generování hodnot hash. Ve výchozím nastavení není uděleno PUBLIC, budete ho muset udělit konkrétně (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).

Výsledkem této funkce je datový typ RAW . Můžete jej uložit do RAW nebo jej převeďte na VARCHAR2 pomocí RAWTOHEX nebo UTL_ENCODE.BASE64_ENCODE funkce.

HASH funkce je přetížena, aby akceptovala tři datové typy jako vstup:RAW , CLOB a BLOB . Kvůli pravidlům implicitní konverze, pokud použijete VARCHAR2 jako vstup se Oracle pokusí převést na RAW a s největší pravděpodobností selže, protože tento převod funguje pouze s hexadecimálními řetězci.

Pokud používáte VARCHAR2 pak musíte převést vstup na binární datový typ nebo CLOB , například:

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;

další informace naleznete v dokumentaci DBMS_CRYPTO.hash



  1. Jak přidám primární klíč auto_increment do databáze SQL Server?

  2. Nejlepší způsob, jak se vyhnout duplicitnímu vstupu do databáze mysql

  3. Co potřebuji ke spuštění SQL?

  4. Nejnovější trendy PostgreSQL:Nejvíce časově náročné úkoly a důležité metriky ke sledování