首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sha512加密中的Oracle校验数据

sha512加密中的Oracle校验数据
EN

Stack Overflow用户
提问于 2015-04-08 09:09:24
回答 1查看 5.8K关注 0票数 0

我需要通过Oracle检查sha512加密中的数据。

示例查询:

代码语言:javascript
复制
SELECT * FROM text WHERE SHA512(id) = '$id'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-08 10:39:00

Oracle提供了处理加密和散列的DBMS_CRYPTO包。

您可以以如下查询所示的方式将SHA哈希计算和比较与某些字符串常量结合起来:

代码语言:javascript
复制
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
  ) 

不幸的是,由于缺乏支持,您无法处理Oracle11g中的SHA-512散列。但甲骨文12c是有可能的。

文档:

Oracle11g中的密码包

Oracle12c中的密码包

还有两件事你必须考虑到:

  1. 确保源字符串的字符集是相同的,因为散列是根据二进制数据计算的。
  2. 从性能的角度来看,最好将预计算的散列值存储在列中,对其进行索引,并将外部参数与存储在列中的值进行比较。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29510413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档