首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle DBMS_OBFUSCATION_TOOLKIT.MD5中将NVARCHAR2转换为MD5哈希

在Oracle DBMS_OBFUSCATION_TOOLKIT.MD5中将NVARCHAR2转换为MD5哈希
EN

Stack Overflow用户
提问于 2012-05-31 13:26:48
回答 1查看 3.6K关注 0票数 1
代码语言:javascript
复制
DECLARE
  l_string  NVARCHAR2(600) := '123456';
  checksum  NVARCHAR2(600);

BEGIN

   DBMS_OUTPUT.DISABLE;
   DBMS_OUTPUT.ENABLE(1000000);

   DBMS_OBFUSCATION_TOOLKIT.md5 (input_string  => l_string, checksum_string => checksum);

   DBMS_OUTPUT.PUT_LINE(RAWTONHEX(utl_raw.cast_to_raw(checksum)));

END;

期望值: e10adc3949ba59abbe56e057f20f883e

但它返回: FFFD00390049FFFD0059FFFDFFFD0056FFFD000FFFFD003E

注意,我希望保持nvarchar2数据类型。来自校验和变量的值被存储在类型为nvarchar2的列中。

我知道md5接受和返回varchar2格式的数据。但是如果有人能帮助我使用nvarchar2数据类型解决这个问题,那就太好了。

NLS_CHARACTERSET = AL32UTF8

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-19 01:01:36

下面的代码应该可以通过dbms_crypto使用hash()

代码语言:javascript
复制
declare
  l_src nvarchar2(100) := '123456';
  l_raw_hash raw(100);
begin
  l_raw_hash := dbms_crypto.hash(to_clob(l_src), dbms_crypto.HASH_MD5);
  dbms_output.put_line(l_raw_hash);
end;

结果: E10ADC3949BA59ABBE56E057F20F883E

l_raw_hash将采用原始格式。您可以使用UTL_RAW将其转换为另一种数据类型。只需确保您的显示器显示了正确的字符集,否则看起来会很有趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10827888

复制
相关文章

相似问题

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