Oracle校验数据sha512加密
Oracle check data in sha512 encryption
我需要通过Oracle查询查询sha512加密的数据
示例查询:
SELECT * FROM text WHERE SHA512(id) = '$id'
Oracle 提供 DBMS_CRYPTO
包来处理加密和哈希。
您可以按照此查询中显示的方式合并 SHA 哈希计算并与某些字符串常量进行比较:
select *
from text t
where
lower( -- to guarantee same character case
rawtohex( -- convert hash to string representation
dbms_crypto.hash( -- hash calculation function
utl_raw.cast_to_raw(t.id), -- need to convert a string before passing it to
-- function in parameter because otherwise
-- it casted to RAW directly with hextoraw().
6 -- dbms_crypto.HASH_SH512 - for Oracle 12c only
)
)
)
=
lower( -- to guarantee same character case
:some_id_sha2_const_parameter -- parameter string to compare with
)
不幸的是,由于缺乏支持,您无法处理 Oracle 11g 中的 SHA-512
哈希。但是使用 Oracle 12c 是可能的。
文档:
DBMS_CRYPTO package in Oracle 11g
DBMS_CRYPTO package in Oracle 12c
还有两件事您必须考虑:
- 确保源字符串的字符集相同,因为散列是根据二进制数据计算的。
- 从性能的角度来看,最好将预先计算的哈希值存储在数据库中的列中,对其进行索引,并将外部参数与存储在列中的值进行比较。
我需要通过Oracle查询查询sha512加密的数据
示例查询:
SELECT * FROM text WHERE SHA512(id) = '$id'
Oracle 提供 DBMS_CRYPTO
包来处理加密和哈希。
您可以按照此查询中显示的方式合并 SHA 哈希计算并与某些字符串常量进行比较:
select *
from text t
where
lower( -- to guarantee same character case
rawtohex( -- convert hash to string representation
dbms_crypto.hash( -- hash calculation function
utl_raw.cast_to_raw(t.id), -- need to convert a string before passing it to
-- function in parameter because otherwise
-- it casted to RAW directly with hextoraw().
6 -- dbms_crypto.HASH_SH512 - for Oracle 12c only
)
)
)
=
lower( -- to guarantee same character case
:some_id_sha2_const_parameter -- parameter string to compare with
)
不幸的是,由于缺乏支持,您无法处理 Oracle 11g 中的 SHA-512
哈希。但是使用 Oracle 12c 是可能的。
文档:
DBMS_CRYPTO package in Oracle 11g
DBMS_CRYPTO package in Oracle 12c
还有两件事您必须考虑:
- 确保源字符串的字符集相同,因为散列是根据二进制数据计算的。
- 从性能的角度来看,最好将预先计算的哈希值存储在数据库中的列中,对其进行索引,并将外部参数与存储在列中的值进行比较。