首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用VARCHAR2将DBMS_OBFUSCATION_TOOLKIT.MD5散列为字母数字

如何用VARCHAR2将DBMS_OBFUSCATION_TOOLKIT.MD5散列为字母数字
EN

Stack Overflow用户
提问于 2014-09-02 18:44:17
回答 1查看 2.2K关注 0票数 1

我有三个可变的名字,密码,邮件。我想用MD5像名字密码邮件一样散列它们。当我使用这个代码时:

代码语言:javascript
复制
SELECT sys.DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => 'hurricane-1234-mail@mail.com') FROM DUAL

输出情况如下:

代码语言:javascript
复制
8����n�iB

我想破解这个字母数字。喜欢(随机的例子);

代码语言:javascript
复制
AD63Ss32S32casad23D

有没有用MD5这样做的方法,或者哪个ORACLE函数可以像我想要的那样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 19:03:52

您可以将输入字符串转换为RAW并传入该字符串,从而获得一个原始值:

代码语言:javascript
复制
select dbms_obfuscation_toolkit.md5(input =>
  utl_i18n.string_to_raw(data => 'hurricane-1234-mail@mail.com')) from dual;

0B38E5C219F8E40CADD2156ECBCB6942

或者传递一个字符串并将结果转换为RAW:

代码语言:javascript
复制
select utl_i18n.string_to_raw(data => dbms_obfuscation_toolkit.md5(
  input_string => 'hurricane-1234-mail@mail.com')) from dual;

0B38E5C219F8E40CADD2156ECBCB6942

你在一条评论中说你在10g,但如果你在11g或更高,你应该考虑搬到DBMS_CRYPTO代替,因为DBMS_OBFUSCATION_TOOLKIT现在被废弃了。但是,您不能在普通SQL中使用它,因为typ参数是PLS_INTEGER,但作为示例,可以从块调用:

代码语言:javascript
复制
set serveroutput on
begin
  dbms_output.put_line(dbms_crypto.hash(src => utl_i18n.string_to_raw(
    data => 'hurricane-1234-mail@mail.com'), typ => dbms_crypto.hash_md5));
end;
/

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

https://stackoverflow.com/questions/25630178

复制
相关文章

相似问题

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