+ -
当前位置:首页 → 问答吧 → 求助DB2 MD5算法函数!

求助DB2 MD5算法函数!

时间:2007-07-23

来源:互联网

要在db2数据库存放密码,想用MD5加密,求助DB2 MD5算法函数!谢谢!

作者: haods   发布时间: 2007-07-23

哪位大侠有这方面的资料啊!谢谢啦!~~~~~~~~~~~~

作者: haods   发布时间: 2007-07-24

package db2udf;

import java.io.*;
import java.security.*;

public class MyUDF {

        public static int putLine(String inLine) throws Exception {
                int outCount = 0;
                try {
                        outCount = inLine.length();
                        File writefile = new File("TraceOut.log");
                        if (writefile.exists() == false) {
                                writefile.createNewFile();
                                writefile = new File("TraceOut.log");
                        }
                        FileWriter filewriter = new FileWriter(writefile, true);
                        filewriter.write("[" + "Timestamp" + "] " + inLine + "\n");
                        filewriter.flush();
                        filewriter.close();
                } catch (Exception d) {
                        System.out.println(d.getMessage());
                }
                return outCount;
        }

        public static String MD5(String s) throws Exception {
                String s1 = new String("");
                char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                                'a', 'b', 'c', 'd', 'e', 'f' };
                try {
                        byte[] strTemp = s.getBytes();
                        MessageDigest mdTemp = MessageDigest.getInstance("MD5");
                        mdTemp.update(strTemp);
                        byte[] md = mdTemp.digest();
                        int j = md.length;
                        char str[] = new char[j * 2];
                        int k = 0;
                        for (int i = 0; i < j; i++) {
                                byte byte0 = md;
                                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                                str[k++] = hexDigits[byte0 & 0xf];
                        }
                        s1 = new String(str);
                } catch (Exception e) {
                        System.out.println(e.getMessage());
                }
                return s1;
        }
}
搞个java的udf

[ 本帖最后由 大梦 于 2007-7-24 13:40 编辑 ]

db2-auth-udfs-1.2-win32.zip (1.38 MB)

下载次数:108

2007-07-24 13:40

db2-auth-udfs-1.2.tar.gz (4.42 KB)

下载次数:53

2007-07-24 13:40

作者: 大梦   发布时间: 2007-07-24

db2 有加密函数。

作者: lizhuo   发布时间: 2007-07-25

ENCRYPT与DECRYPT_BIN and DECRYPT_CHAR那个是可逆的!
加密码的结果与标准MD5的对不上!

[ 本帖最后由 大梦 于 2007-7-25 11:18 编辑 ]

作者: 大梦   发布时间: 2007-07-25

多谢 大梦 的支持,为我找到了解决的方向,十分感谢!

作者: haods   发布时间: 2007-07-25

import java.io.*;
import java.security.*;
import COM.ibm.db2.app.*;

public class MyUDF extends UDF {

        public static String MD5(String s) throws Exception {
                String s1 = new String("";
                char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                                'a', 'b', 'c', 'd', 'e', 'f' };
                try {
                        byte[] strTemp = s.getBytes();
                        MessageDigest mdTemp = MessageDigest.getInstance("MD5";
                        mdTemp.update(strTemp);
                        byte[] md = mdTemp.digest();
                        int j = md.length;
                        char str[] = new char[j * 2];
                        int k = 0;
                        for (int i = 0; i < j; i++) {
                                byte byte0 = md;
                                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                                str[k++] = hexDigits[byte0 & 0xf];
                        }
                        s1 = new String(str);
                } catch (Exception e) {
                        System.out.println(e.getMessage());
                }
                return s1;
        }
}



DROP FUNCTION MD5;
CALL sqlj.remove_jar('Md5UDF');
CALL sqlj.install_jar('file:\temp\Md5UDF.jar', 'Md5UDF');


CREATE FUNCTION MD5(varchar(8)
RETURNS INTEGER
EXTERNAL NAME 'Md5UDF:MyUDF!MD5'
FENCED
SCRATCHPAD 10
FINAL CALL
VARIANT
NO SQL
PARAMETER STYLE DB2GENERAL
LANGUAGE JAVA
NO EXTERNAL ACTION
;

values md5('00000000');

出错:

SQL4304N 具有特定名称 "SQL070725192051200" 的 Java 存储过程或用户定义的函数
"ORAFUN.MD5"不能装入 Java 类 "MyUDF",原因码为 "2"。  SQLSTATE=42724
db2 =>
请大家帮我分析一下是什么原因?

作者: haods   发布时间: 2007-07-25

在java里面执行结果是正确的。

作者: haods   发布时间: 2007-07-25

DROP FUNCTION orafun.MD5;
CALL sqlj.remove_jar('Md5UDF');
CALL sqlj.install_jar('file:\temp\Md5UDF.jar', 'Md5UDF');

CREATE FUNCTION ORAFUN.MD5(VARCHAR(8)
RETURNS VARCHAR(70)
EXTERNAL NAME 'MD5UDF:MyUDF!MD5'
FENCED
VARIANT
NO SQL
EXTERNAL ACTION
LANGUAGE JAVA
PARAMETER STYLE JAVA
;
values orafun.md5('00000000');
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
import java.io.*;
import java.security.*;
import COM.ibm.db2.app.*;

public class MyUDF extends UDF {

        public static String MD5(String s) throws Exception {
                String s1 = new String("";
                char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                                'a', 'b', 'c', 'd', 'e', 'f' };
                try {
                        byte[] strTemp = s.getBytes();
                        MessageDigest mdTemp = MessageDigest.getInstance("MD5";
                        mdTemp.update(strTemp);
                        byte[] md = mdTemp.digest();
                        int j = md.length;
                        char str[] = new char[j * 2];
                        int k = 0;
                        for (int i = 0; i < j; i++) {
                                byte byte0 = md;
                                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                                str[k++] = hexDigits[byte0 & 0xf];
                        }
                        s1 = new String(str);
                } catch (Exception e) {
                        System.out.println(e.getMessage());
                }
                return s1;
        }
}

作者: haods   发布时间: 2007-07-25

参见

http://bbs.chinaunix.net/viewthr ... &extra=page%3D3

作者: 大梦   发布时间: 2007-07-25

能把在DB2中建MD5函数说的详细些吗?

作者: hoootong   发布时间: 2010-09-29

上面附件带的两个文件是干嘛用的?

作者: hoootong   发布时间: 2010-09-29

请各位大侠帮忙,急用,谢谢各位了~~

作者: hoootong   发布时间: 2010-09-29