01: /*
02: * Copyright (c) JForum Team
03: * All rights reserved.
04: *
05: * Redistribution and use in source and binary forms,
06: * with or without modification, are permitted provided
07: * that the following conditions are met:
08: *
09: * 1) Redistributions of source code must retain the above
10: * copyright notice, this list of conditions and the
11: * following disclaimer.
12: * 2) Redistributions in binary form must reproduce the
13: * above copyright notice, this list of conditions and
14: * the following disclaimer in the documentation and/or
15: * other materials provided with the distribution.
16: * 3) Neither the name of "Rafael Steil" nor
17: * the names of its contributors may be used to endorse
18: * or promote products derived from this software without
19: * specific prior written permission.
20: *
21: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
22: * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
23: * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
24: * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27: * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
28: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
32: * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
34: * IN CONTRACT, STRICT LIABILITY, OR TORT
35: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
37: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
38: *
39: * This file creation date: Mar 29, 2003 / 1:15:50 AM
40: * The JForum Project
41: * http://www.jforum.net
42: */
43: package net.jforum.util;
44:
45: import java.security.MessageDigest;
46: import java.security.NoSuchAlgorithmException;
47:
48: import net.jforum.exceptions.ForumException;
49:
50: /**
51: * Encodes a string using MD5 hashing
52: *
53: * @author Rafael Steil
54: * @version $Id: MD5.java,v 1.7 2006/08/23 02:13:44 rafaelsteil Exp $
55: */
56: public class MD5 {
57: /**
58: * Encodes a string
59: *
60: * @param str String to encode
61: * @return Encoded String
62: * @throws NoSuchAlgorithmException
63: */
64: public static String crypt(String str) {
65: if (str == null || str.length() == 0) {
66: throw new IllegalArgumentException(
67: "String to encript cannot be null or zero length");
68: }
69:
70: StringBuffer hexString = new StringBuffer();
71:
72: try {
73: MessageDigest md = MessageDigest.getInstance("MD5");
74: md.update(str.getBytes());
75: byte[] hash = md.digest();
76:
77: for (int i = 0; i < hash.length; i++) {
78: if ((0xff & hash[i]) < 0x10) {
79: hexString.append("0"
80: + Integer.toHexString((0xFF & hash[i])));
81: } else {
82: hexString.append(Integer
83: .toHexString(0xFF & hash[i]));
84: }
85: }
86: } catch (NoSuchAlgorithmException e) {
87: throw new ForumException("" + e);
88: }
89:
90: return hexString.toString();
91: }
92: }
|