免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 17337 | 回复: 12
打印 上一主题 下一主题

求助DB2 MD5算法函数! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-23 20:19 |只看该作者 |倒序浏览
要在db2数据库存放密码,想用MD5加密,求助DB2 MD5算法函数!谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-07-24 09:31 |只看该作者

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

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

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
3 [报告]
发表于 2007-07-24 13:37 |只看该作者
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, 下载次数: 259

db2-auth-udfs-1.2.tar.gz

4.42 KB, 下载次数: 178

论坛徽章:
0
4 [报告]
发表于 2007-07-25 10:25 |只看该作者
db2 有加密函数。

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
5 [报告]
发表于 2007-07-25 11:13 |只看该作者
ENCRYPT与DECRYPT_BIN and DECRYPT_CHAR那个是可逆的!
加密码的结果与标准MD5的对不上!

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

论坛徽章:
0
6 [报告]
发表于 2007-07-25 13:33 |只看该作者
多谢 大梦 的支持,为我找到了解决的方向,十分感谢!

论坛徽章:
0
7 [报告]
发表于 2007-07-25 19:28 |只看该作者

回复 #3 大梦 的帖子

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 =>
请大家帮我分析一下是什么原因?

论坛徽章:
0
8 [报告]
发表于 2007-07-25 19:30 |只看该作者
在java里面执行结果是正确的。

论坛徽章:
0
9 [报告]
发表于 2007-07-25 20:06 |只看该作者

终于好了,谢谢大家了!

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;
        }
}

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
10 [报告]
发表于 2007-07-25 21:19 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP