- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有 3 个变量名称、密码、邮件。我想像使用 MD5 的名称-密码-邮件一样对它们进行哈希处理。当我使用这段代码时:
SELECT sys.DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => 'hurricane-1234-mail@mail.com') FROM DUAL
输出看起来像:
8����n�iB
我想散列这个字母数字。喜欢(随机示例);
AD63Ss32S32casad23D
有什么方法可以用 MD5 或哪个 ORACLE SQL 函数来实现我想要的。
最佳答案
您可以将您的输入字符串转换为 RAW 并将其传递进来,获取 RAW 值:
select dbms_obfuscation_toolkit.md5(input =>
utl_i18n.string_to_raw(data => 'hurricane-1234-mail@mail.com')) from dual;
0B38E5C219F8E40CADD2156ECBCB6942
或者传入一个字符串,将结果转为RAW:
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,但作为一个来自 block 的示例调用:
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
关于sql - 如何使用 DBMS_OBFUSCATION_TOOLKIT.MD5 将 VARCHAR2 散列为字母数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630178/
我正在尝试编写一个函数来从我在这里和那里收集的位中获取 MD5 哈希值。我想获得散列的小写十六进制表示。到目前为止我有这个: CREATE OR REPLACE FUNCTION MD5 (
捕获 SQLException::java.sql.SQLException:ORA-29532:Java 调用因未捕获的 Java 异常而终止:java.sql.SQLException:无法获取服
我有 3 个变量名称、密码、邮件。我想像使用 MD5 的名称-密码-邮件一样对它们进行哈希处理。当我使用这段代码时: SELECT sys.DBMS_OBFUSCATION_TOOLKIT.MD5(I
我有一个用 PL/SQL 编写的遗留应用程序,它使用 3DES 加密和解密数据。现在我需要从 ruby 应用程序执行类似的加密。最终生成的散列将需要由同一个 PL/SQL 应用程序使用其现有算法解
我是一名优秀的程序员,十分优秀!