java MD5 加密 及对应的 oracle数据库中的MD5加密实现

① JAVA MD5 加密:

 1 package com.test.util;
 2 
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5 
 6 import sun.misc.BASE64Encoder;
 7  
 8 public class CrytogramTool {
 9 
10     /**
11      * 使用指定算法加密指定字符串
12      * @param message        待加密的字符串
13      * @param algorithmName  加密算法
14      * @return               加密后的字符串
15      */
16     public static String encryptStr(String message, String algorithmName){
17         MessageDigest messageDigest = null;
18         try {
19             messageDigest = MessageDigest.getInstance(algorithmName);
20         } catch (NoSuchAlgorithmException e) {
21             e.printStackTrace();
22         }
23         messageDigest.reset();
24         byte[] bytes = message.getBytes();
25         byte[] out = messageDigest.digest(bytes);
26         BASE64Encoder enc = new BASE64Encoder();
27         return enc.encode(out);
28     }
29 }

调用方法:CrytogramTool.encryptStr("待加密字串","MD5");

② ORACLE数据库端对应的实现:

   1. 先MD5加密

CREATE OR REPLACE FUNCTION FUNC_ENCRYPT_MD5(PASSWD IN VARCHAR2) RETURN VARCHAR2 IS
  /****************************************************************
   NAME       :  FUNC_ENCRYPT_MD5
   PURPOSE    :  MD5加密,返回加密后的字符串
   PARAMETER  :  PASSWD   待加密字符串
   CREATED ON :  2014/04/21
   COMMENTS   :  
   AUTHOR     :  soryou
   ****************************************************************/
   RTNVAL VARCHAR2(32);
BEGIN
   RTNVAL := UTL_RAW.CAST_TO_RAW(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => PASSWD));
   RETURN RTNVAL;
END;

 

   2. 再BASE64

V_STR:='';
SELECT UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(FUNC_ENCRYPT_MD5('待加密字串'))) INTO V_STR FROM  DUAL;

最后,V_STR的值即为得到的加密后的字符串。

 

 

 

posted on 2014-04-22 09:52  soryou  阅读(2405)  评论(0编辑  收藏  举报