在Oracle中创建一个sha1-hash行
发布时间:2020-12-12 13:48:18 所属栏目:百科 来源:网络整理
导读:我在Oracle数据库中的select中创建一行的sha1-hash有问题.我在MSSQL中做了如下: SELECT *,HASHBYTES('SHA1',CAST(ID as varchar(10)+ TextEntry1+TextEntry2+CAST(Timestamp as varchar(10)) as HashFROM dbo.ExampleTableWHERE ID = [foo] 但是,在使用Orac
我在Oracle数据库中的select中创建一行的sha1-hash有问题.我在MSSQL中做了如下:
SELECT *,HASHBYTES('SHA1',CAST(ID as varchar(10)+ TextEntry1+TextEntry2+CAST(Timestamp as varchar(10)) as Hash FROM dbo.ExampleTable WHERE ID = [foo] 但是,在使用Oracle时,似乎找不到类似的功能. 任何指针都将不胜感激. 软件包 DBMS_CRYPTO是产生哈希值的正确包.默认情况下,它不会授予PUBLIC,您必须具体授予(GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1).此函数的结果是数据类型为RAW.您可以将其存储在RAW列或使用RAWTOHEX或UTL_ENCODE.BASE64_ENCODE函数将其转换为VARCHAR2. HASH函数被重载以接受三个数据类型作为输入:RAW,CLOB和BLOB.由于rules of implicit conversion,如果您使用VARCHAR2作为输入,Oracle将尝试将其转换为RAW,并且很有可能会失败,因为此转换仅适用于十六进制字符串. 如果您使用VARCHAR2,则需要将输入转换为二进制数据类型或CLOB,例如: 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; 您将在 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |