① 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的值即为得到的加密后的字符串。