我有以下用于检查用户密码的Oracle函数,但我想切换到MySQL。我正在寻找一组能产生相同结果的MySQL函数。
FUNCTION encpasswd (ID IN VARCHAR, passwd IN VARCHAR)
RETURN VARCHAR
IS
v_result VARCHAR2 (4000);
BEGIN
v_result := DBMS_OBFUSCATION_TOOLKIT.md5 (input_string => ID || passwd);
--RETURN RAWTOHEX (v_result);
RETURN v_result;
END encpasswd;发布于 2013-10-08 11:45:37
MySQL的MD5函数返回32个十六进制字符的字符串。它被标记为二进制字符串,但它不是人们所期望的16字节的二进制数据。
因此,要修复它,必须将此字符串转换回二进制数据,例如:
SELECT hex(aes_encrypt('test-data', unhex(MD5('test_key'))));结果是:
8FCA326C25C8908446D28884394F2E22它也是一个32个十六进制字符的字符串。但在其他方面,它的结果与Oracle相同。
和BTW:
发布于 2013-10-08 11:45:47
Mysql有一个原生的"md5“函数。
SELECT md5(concat(id, passwd)) FROM yourtable作为函数:
CREATE FUNCTION `encpasswd`(`ID` VARCHAR(250), `passwd` VARCHAR(250)) RETURNS VARCHAR(250)
BEGIN
RETURN md5(concat(ID,passwd))
ENDhttps://stackoverflow.com/questions/19238372
复制相似问题