<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FMD5_Message_Digest_algorithm</id>
		<title>Java Tutorial/Security/MD5 Message Digest algorithm - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FMD5_Message_Digest_algorithm"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/MD5_Message_Digest_algorithm&amp;action=history"/>
		<updated>2026-04-17T02:25:35Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Security/MD5_Message_Digest_algorithm&amp;diff=4356&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/MD5_Message_Digest_algorithm&amp;diff=4356&amp;oldid=prev"/>
				<updated>2010-06-01T05:01:54Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:01, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Security/MD5_Message_Digest_algorithm&amp;diff=4355&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/MD5_Message_Digest_algorithm&amp;diff=4355&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Check password based on MD5 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.FileReader;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    String name = &amp;quot;&amp;quot;;&lt;br /&gt;
    String passwd = &amp;quot;&amp;quot;;&lt;br /&gt;
    BufferedReader in = new BufferedReader(new FileReader(&amp;quot;passwd.txt&amp;quot;));&lt;br /&gt;
    while ((name = in.readLine()) != null) {&lt;br /&gt;
      passwd = in.readLine();&lt;br /&gt;
      if (name.equals(args[0])) {&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    MessageDigest m = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    m.update(args[1].getBytes(&amp;quot;UTF8&amp;quot;));&lt;br /&gt;
    byte s[] = m.digest();&lt;br /&gt;
    String result = &amp;quot;&amp;quot;;&lt;br /&gt;
    for (int i = 0; i &amp;lt; s.length; i++) {&lt;br /&gt;
      result += Integer.toHexString((0x000000ff &amp;amp; s[i]) | 0xffffff00).substring(6);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(name.equals(args[0]) &amp;amp;&amp;amp; result.equals(passwd));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Check password salt based on MD5 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    String name = &amp;quot;name&amp;quot;;&lt;br /&gt;
    String passwd = &amp;quot;password&amp;quot;;&lt;br /&gt;
    String salts = &amp;quot;12,12,12&amp;quot;;&lt;br /&gt;
    String salttmp[] = salts.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
    byte salt[] = new byte[salttmp.length];&lt;br /&gt;
    for (int i = 0; i &amp;lt; salt.length; i++) {&lt;br /&gt;
      salt[i] = Byte.parseByte(salttmp[i]);&lt;br /&gt;
    }&lt;br /&gt;
    MessageDigest m = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    m.update(salt);&lt;br /&gt;
    m.update(&amp;quot;name&amp;quot;.getBytes(&amp;quot;UTF8&amp;quot;));&lt;br /&gt;
    byte s[] = m.digest();&lt;br /&gt;
    String result = &amp;quot;&amp;quot;;&lt;br /&gt;
    for (int i = 0; i &amp;lt; s.length; i++) {&lt;br /&gt;
      result += Integer.toHexString((0x000000ff &amp;amp; s[i]) | 0xffffff00).substring(6);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(result.equals(passwd));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  creates an MD5 message digest from a file and displays it to the screen BASE64 Encoded. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.BufferedInputStream;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import sun.misc.BASE64Encoder;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    MessageDigest md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    BufferedInputStream in = new BufferedInputStream(new FileInputStream(&amp;quot;inputfile.txt&amp;quot;));&lt;br /&gt;
    int theByte = 0;&lt;br /&gt;
    while ((theByte = in.read()) != -1) {&lt;br /&gt;
      md.update((byte) theByte);&lt;br /&gt;
    }&lt;br /&gt;
    in.close();&lt;br /&gt;
    byte[] theDigest = md.digest();&lt;br /&gt;
    System.out.println(new BASE64Encoder().encode(theDigest));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a Keyed Digest Using MD5 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] a) throws Exception {&lt;br /&gt;
    byte[] buffer = new byte[10000];&lt;br /&gt;
    byte[] key = new byte[8];&lt;br /&gt;
    MessageDigest md5 = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    md5.update(buffer);&lt;br /&gt;
    byte[] k = md5.digest(key);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Encode an MD5 digest into a String. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Licensed to the Apache Software Foundation (ASF) under one or more&lt;br /&gt;
 * contributor license agreements.  See the NOTICE file distributed with&lt;br /&gt;
 * this work for additional information regarding copyright ownership.&lt;br /&gt;
 * The ASF licenses this file to You under the Apache License, Version 2.0&lt;br /&gt;
 * (the &amp;quot;License&amp;quot;); you may not use this file except in compliance with&lt;br /&gt;
 * the License.  You may obtain a copy of the License at&lt;br /&gt;
 * &lt;br /&gt;
 *      http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 * &lt;br /&gt;
 * Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 * See the License for the specific language governing permissions and&lt;br /&gt;
 * limitations under the License.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Encode an MD5 digest into a String.&lt;br /&gt;
 * &amp;lt;p&amp;gt;&lt;br /&gt;
 * The 128 bit MD5 hash is converted into a 32 character long String.&lt;br /&gt;
 * Each character of the String is the hexadecimal representation of 4 bits&lt;br /&gt;
 * of the digest.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Remy Maucherat&lt;br /&gt;
 * @version $Revision: 515 $ $Date: 2008-03-17 22:02:23 +0100 (Mon, 17 Mar 2008) $&lt;br /&gt;
 */&lt;br /&gt;
public final class MD5Encoder {&lt;br /&gt;
&lt;br /&gt;
    // ----------------------------------------------------- Instance Variables&lt;br /&gt;
&lt;br /&gt;
    private static final char[] hexadecimal =&lt;br /&gt;
    {&amp;quot;0&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;5&amp;quot;, &amp;quot;6&amp;quot;, &amp;quot;7&amp;quot;, &amp;quot;8&amp;quot;, &amp;quot;9&amp;quot;,&lt;br /&gt;
     &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
    // --------------------------------------------------------- Public Methods&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Encodes the 128 bit (16 bytes) MD5 into a 32 character String.&lt;br /&gt;
     *&lt;br /&gt;
     * @param binaryData Array containing the digest&lt;br /&gt;
     * @return Encoded MD5, or null if encoding failed&lt;br /&gt;
     */&lt;br /&gt;
    public String encode( byte[] binaryData ) {&lt;br /&gt;
        if (binaryData.length != 16)&lt;br /&gt;
            return null;&lt;br /&gt;
        char[] buffer = new char[32];&lt;br /&gt;
        for (int i=0; i&amp;lt;16; i++) {&lt;br /&gt;
            int low = (int) (binaryData[i] &amp;amp; 0x0f);&lt;br /&gt;
            int high = (int) ((binaryData[i] &amp;amp; 0xf0) &amp;gt;&amp;gt; 4);&lt;br /&gt;
            buffer[i*2] = hexadecimal[high];&lt;br /&gt;
            buffer[i*2 + 1] = hexadecimal[low];&lt;br /&gt;
        }&lt;br /&gt;
        return new String(buffer);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get MD5 Base64 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * $Header: /cvsroot/mvnforum/mvnforum/contrib/phpbb2mvnforum/src/org/mvnforum/util/MD5.java,v 1.6 2007/01/15 10:27:31 dungbtm Exp $&lt;br /&gt;
 * $Author: dungbtm $&lt;br /&gt;
 * $Revision: 1.6 $&lt;br /&gt;
 * $Date: 2007/01/15 10:27:31 $&lt;br /&gt;
 *&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (C) 2002-2007 by MyVietnam.net&lt;br /&gt;
 *&lt;br /&gt;
 * All copyright notices regarding mvnForum MUST remain &lt;br /&gt;
 * intact in the scripts and in the outputted HTML.&lt;br /&gt;
 * The &amp;quot;powered by&amp;quot; text/logo with a link back to&lt;br /&gt;
 * http://www.mvnForum.ru and http://www.MyVietnam.net in &lt;br /&gt;
 * the footer of the pages MUST remain visible when the pages&lt;br /&gt;
 * are viewed on the internet or intranet.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 * it under the terms of the GNU General Public License as published by&lt;br /&gt;
 * the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 * any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 * GNU General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 * You should have received a copy of the GNU General Public License&lt;br /&gt;
 * along with this program; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 *&lt;br /&gt;
 * Support can be obtained from support forums at:&lt;br /&gt;
 * http://www.mvnForum.ru/mvnforum/index&lt;br /&gt;
 *&lt;br /&gt;
 * Correspondence and Marketing Questions can be sent to:&lt;br /&gt;
 * info at MyVietnam net&lt;br /&gt;
 *&lt;br /&gt;
 * @author: &lt;br /&gt;
 */&lt;br /&gt;
import java.io.UnsupportedEncodingException;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import sun.misc.BASE64Encoder;&lt;br /&gt;
//  The JavaReference.ru Software License, Version 1.0 &lt;br /&gt;
//  Copyright (c) 2002-2005  JavaReference.ru. All rights reserved.&lt;br /&gt;
//&lt;br /&gt;
//  &lt;br /&gt;
//  Redistribution and use in source and binary forms, with or without &lt;br /&gt;
//  modification, are permitted provided that the following conditions &lt;br /&gt;
//  are met: &lt;br /&gt;
//  &lt;br /&gt;
//  1. Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
//     this list of conditions and the following disclaimer. &lt;br /&gt;
//  &lt;br /&gt;
//  2. Redistributions in binary form must reproduce the above copyright notice, &lt;br /&gt;
//     this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
//     and/or other materials provided with the distribution. &lt;br /&gt;
//     &lt;br /&gt;
//  3. The end-user documentation included with the redistribution, if any, must &lt;br /&gt;
//     include the following acknowlegement: &lt;br /&gt;
//     &lt;br /&gt;
//     &amp;quot;This product includes software developed by the Javareference.ru &lt;br /&gt;
//     (http://www.javareference.ru/).&amp;quot; &lt;br /&gt;
//     &lt;br /&gt;
//     Alternately, this acknowlegement may appear in the software itself, if and &lt;br /&gt;
//     wherever such third-party acknowlegements normally appear. &lt;br /&gt;
//     &lt;br /&gt;
//  4. The names &amp;quot;JavaReference&amp;quot; and &amp;quot;Javareference.ru&amp;quot;, must not be used to &lt;br /&gt;
//     endorse or promote products derived from this software without prior written &lt;br /&gt;
//     permission. For written permission, please contact webmaster@javareference.ru. &lt;br /&gt;
//     &lt;br /&gt;
//  5. Products derived from this software may not be called &amp;quot;Javareference&amp;quot; nor may &lt;br /&gt;
//     &amp;quot;Javareference&amp;quot; appear in their names without prior written permission of  &lt;br /&gt;
//     Javareference.ru. &lt;br /&gt;
//     &lt;br /&gt;
//  THIS SOFTWARE IS PROVIDED ``AS IS&amp;quot;&amp;quot; AND ANY EXPRESSED OR IMPLIED WARRANTIES, &lt;br /&gt;
//  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND &lt;br /&gt;
//  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL &lt;br /&gt;
//  JAVAREFERENCE.ru OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, &lt;br /&gt;
//  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT &lt;br /&gt;
//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR &lt;br /&gt;
//  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF &lt;br /&gt;
//  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING &lt;br /&gt;
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, &lt;br /&gt;
//  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. &lt;br /&gt;
//  &lt;br /&gt;
//  Software from this site consists of contributions made by various individuals &lt;br /&gt;
//  on behalf of Javareference.ru. For more information on Javareference.ru, &lt;br /&gt;
//  please see http://www.javareference.ru &lt;br /&gt;
/**&lt;br /&gt;
 * @author anandh&lt;br /&gt;
 */&lt;br /&gt;
public class MD5 {&lt;br /&gt;
    static char[] carr = { &amp;quot;0&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;5&amp;quot;, &amp;quot;6&amp;quot;, &amp;quot;7&amp;quot;, &amp;quot;8&amp;quot;, &amp;quot;9&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot; };&lt;br /&gt;
    public static String getBase64FromHEX(String input) {&lt;br /&gt;
        &lt;br /&gt;
        byte barr[] = new byte[16];&lt;br /&gt;
        int bcnt = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; 32; i += 2) {&lt;br /&gt;
            char c1 = input.charAt(i);&lt;br /&gt;
            char c2 = input.charAt(i + 1);&lt;br /&gt;
            int i1 = intFromChar(c1);&lt;br /&gt;
            int i2 = intFromChar(c2);&lt;br /&gt;
            barr[bcnt] = 0;&lt;br /&gt;
            barr[bcnt] |= (byte) ((i1 &amp;amp; 0x0F) &amp;lt;&amp;lt; 4);&lt;br /&gt;
            barr[bcnt] |= (byte) (i2 &amp;amp; 0x0F);&lt;br /&gt;
            bcnt++;&lt;br /&gt;
        }&lt;br /&gt;
        BASE64Encoder encoder = new BASE64Encoder();&lt;br /&gt;
        return encoder.encode(barr);&lt;br /&gt;
    }&lt;br /&gt;
    public static synchronized String getMD5_Base64(String input) {&lt;br /&gt;
        // please note that we dont use digest, because if we&lt;br /&gt;
        // cannot get digest, then the second time we have to call it&lt;br /&gt;
        // again, which will fail again&lt;br /&gt;
        MessageDigest digest = null;&lt;br /&gt;
        try {&lt;br /&gt;
            digest = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
        } catch (Exception ex) {&lt;br /&gt;
            ex.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
        if (digest == null)&lt;br /&gt;
            return input;&lt;br /&gt;
        // now everything is ok, go ahead&lt;br /&gt;
        try {&lt;br /&gt;
            digest.update(input.getBytes(&amp;quot;UTF-8&amp;quot;));&lt;br /&gt;
        } catch (java.io.UnsupportedEncodingException ex) {&lt;br /&gt;
            ex.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
        byte[] rawData = digest.digest();&lt;br /&gt;
        BASE64Encoder bencoder = new BASE64Encoder();&lt;br /&gt;
        return bencoder.encode(rawData);&lt;br /&gt;
    }&lt;br /&gt;
    private static int intFromChar(char c) {&lt;br /&gt;
        char clower = Character.toLowerCase(c);&lt;br /&gt;
        for (int i = 0; i &amp;lt; carr.length; i++) {&lt;br /&gt;
            if (clower == carr[i]) {&lt;br /&gt;
                return i;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        &lt;br /&gt;
        //String password = args[0];&lt;br /&gt;
        String password = &amp;quot;test&amp;quot;;&lt;br /&gt;
        MessageDigest digest = null;&lt;br /&gt;
        try {&lt;br /&gt;
            digest = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
        } catch (NoSuchAlgorithmException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
        try {&lt;br /&gt;
            digest.update(password.getBytes(&amp;quot;UTF-8&amp;quot;));&lt;br /&gt;
        } catch (UnsupportedEncodingException ex) {&lt;br /&gt;
            ex.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
        byte[] rawData = digest.digest();&lt;br /&gt;
        StringBuffer printable = new StringBuffer();&lt;br /&gt;
        for (int i = 0; i &amp;lt; rawData.length; i++) {&lt;br /&gt;
            printable.append(carr[((rawData[i] &amp;amp; 0xF0) &amp;gt;&amp;gt; 4)]);&lt;br /&gt;
            printable.append(carr[(rawData[i] &amp;amp; 0x0F)]);&lt;br /&gt;
        }&lt;br /&gt;
        String phpbbPassword = printable.toString();&lt;br /&gt;
        System.out.println(&amp;quot;PHPBB           : &amp;quot; + phpbbPassword);&lt;br /&gt;
        System.out.println(&amp;quot;MVNFORUM        : &amp;quot; + getMD5_Base64(password));&lt;br /&gt;
        System.out.println(&amp;quot;PHPBB-&amp;gt;MVNFORUM : &amp;quot; + getBase64FromHEX(phpbbPassword));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Hash 32 String ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    GNU LESSER GENERAL PUBLIC LICENSE&lt;br /&gt;
    Copyright (C) 2006 The Lobo Project&lt;br /&gt;
    This library is free software; you can redistribute it and/or&lt;br /&gt;
    modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
    License as published by the Free Software Foundation; either&lt;br /&gt;
    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
    This library is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
    Lesser General Public License for more details.&lt;br /&gt;
    You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
    License along with this library; if not, write to the Free Software&lt;br /&gt;
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
    Contact info: lobochief@users.sourceforge.net&lt;br /&gt;
*/&lt;br /&gt;
import java.io.UnsupportedEncodingException;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
public class Strings&lt;br /&gt;
{&lt;br /&gt;
  private static final MessageDigest MESSAGE_DIGEST;&lt;br /&gt;
  public static final String[] EMPTY_ARRAY = new String[0];&lt;br /&gt;
  static {&lt;br /&gt;
      MessageDigest md;&lt;br /&gt;
      try {&lt;br /&gt;
          md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
      } catch(NoSuchAlgorithmException err) {&lt;br /&gt;
        throw new IllegalStateException();&lt;br /&gt;
      }&lt;br /&gt;
      MESSAGE_DIGEST = md;&lt;br /&gt;
  }&lt;br /&gt;
  private static final String HEX_CHARS = &amp;quot;0123456789ABCDEF&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  public static String getMD5(String source) {    &lt;br /&gt;
      byte[] bytes;&lt;br /&gt;
      try {&lt;br /&gt;
        bytes = source.getBytes(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;
      } catch(java.io.UnsupportedEncodingException ue) {&lt;br /&gt;
        throw new IllegalStateException(ue);&lt;br /&gt;
      }&lt;br /&gt;
      byte[] result;&lt;br /&gt;
      synchronized(MESSAGE_DIGEST) {&lt;br /&gt;
          MESSAGE_DIGEST.update(bytes);&lt;br /&gt;
          result = MESSAGE_DIGEST.digest();&lt;br /&gt;
      }&lt;br /&gt;
      char[] resChars = new char[32];&lt;br /&gt;
      int len = result.length;&lt;br /&gt;
      for(int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
          byte b = result[i];&lt;br /&gt;
          int lo4 = b &amp;amp; 0x0F;&lt;br /&gt;
          int hi4 = (b &amp;amp; 0xF0) &amp;gt;&amp;gt; 4;&lt;br /&gt;
          resChars[i*2] = HEX_CHARS.charAt(hi4);&lt;br /&gt;
          resChars[i*2 + 1] = HEX_CHARS.charAt(lo4);&lt;br /&gt;
      }&lt;br /&gt;
      return new String(resChars);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static String getHash32(String source) throws UnsupportedEncodingException {&lt;br /&gt;
      String md5 = getMD5(source);&lt;br /&gt;
      return md5.substring(0, 8);&lt;br /&gt;
  }      &lt;br /&gt;
  public static String getHash64(String source) throws UnsupportedEncodingException {&lt;br /&gt;
      String md5 = getMD5(source);&lt;br /&gt;
      return md5.substring(0, 16);&lt;br /&gt;
  }   &lt;br /&gt;
  &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Hash 64 String ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    GNU LESSER GENERAL PUBLIC LICENSE&lt;br /&gt;
    Copyright (C) 2006 The Lobo Project&lt;br /&gt;
    This library is free software; you can redistribute it and/or&lt;br /&gt;
    modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
    License as published by the Free Software Foundation; either&lt;br /&gt;
    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
    This library is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
    Lesser General Public License for more details.&lt;br /&gt;
    You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
    License along with this library; if not, write to the Free Software&lt;br /&gt;
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
    Contact info: lobochief@users.sourceforge.net&lt;br /&gt;
*/&lt;br /&gt;
import java.io.UnsupportedEncodingException;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
public class Strings&lt;br /&gt;
{&lt;br /&gt;
  private static final MessageDigest MESSAGE_DIGEST;&lt;br /&gt;
  public static final String[] EMPTY_ARRAY = new String[0];&lt;br /&gt;
  static {&lt;br /&gt;
      MessageDigest md;&lt;br /&gt;
      try {&lt;br /&gt;
          md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
      } catch(NoSuchAlgorithmException err) {&lt;br /&gt;
        throw new IllegalStateException();&lt;br /&gt;
      }&lt;br /&gt;
      MESSAGE_DIGEST = md;&lt;br /&gt;
  }&lt;br /&gt;
  private static final String HEX_CHARS = &amp;quot;0123456789ABCDEF&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  public static String getMD5(String source) {    &lt;br /&gt;
      byte[] bytes;&lt;br /&gt;
      try {&lt;br /&gt;
        bytes = source.getBytes(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;
      } catch(java.io.UnsupportedEncodingException ue) {&lt;br /&gt;
        throw new IllegalStateException(ue);&lt;br /&gt;
      }&lt;br /&gt;
      byte[] result;&lt;br /&gt;
      synchronized(MESSAGE_DIGEST) {&lt;br /&gt;
          MESSAGE_DIGEST.update(bytes);&lt;br /&gt;
          result = MESSAGE_DIGEST.digest();&lt;br /&gt;
      }&lt;br /&gt;
      char[] resChars = new char[32];&lt;br /&gt;
      int len = result.length;&lt;br /&gt;
      for(int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
          byte b = result[i];&lt;br /&gt;
          int lo4 = b &amp;amp; 0x0F;&lt;br /&gt;
          int hi4 = (b &amp;amp; 0xF0) &amp;gt;&amp;gt; 4;&lt;br /&gt;
          resChars[i*2] = HEX_CHARS.charAt(hi4);&lt;br /&gt;
          resChars[i*2 + 1] = HEX_CHARS.charAt(lo4);&lt;br /&gt;
      }&lt;br /&gt;
      return new String(resChars);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static String getHash32(String source) throws UnsupportedEncodingException {&lt;br /&gt;
      String md5 = getMD5(source);&lt;br /&gt;
      return md5.substring(0, 8);&lt;br /&gt;
  }      &lt;br /&gt;
  public static String getHash64(String source) throws UnsupportedEncodingException {&lt;br /&gt;
      String md5 = getMD5(source);&lt;br /&gt;
      return md5.substring(0, 16);&lt;br /&gt;
  }   &lt;br /&gt;
  &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  MD5 BASE64 checksum for the specified input string. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.JOptionPane;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
/**&lt;br /&gt;
 * MD5 common utils. Check and calculate MD5 BASE64 sum.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Luigi Zurolo - Liscio Luca&lt;br /&gt;
 * @version 1.1&lt;br /&gt;
 */&lt;br /&gt;
public class MD5 {&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
   * MD5 BASE64 checksum for the specified input string.&lt;br /&gt;
   * &lt;br /&gt;
   * @param input -&lt;br /&gt;
   *          Specified input string&lt;br /&gt;
   * @return String - MD5 BASE64 sum&lt;br /&gt;
   */&lt;br /&gt;
  public static String checkMD5(String input) {&lt;br /&gt;
    try {&lt;br /&gt;
      MessageDigest md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
      md.update(input.getBytes());&lt;br /&gt;
      byte[] enc = md.digest();&lt;br /&gt;
      String md5Sum = new sun.misc.BASE64Encoder().encode(enc);&lt;br /&gt;
      return md5Sum;&lt;br /&gt;
    } catch (NoSuchAlgorithmException nsae) {&lt;br /&gt;
      System.out.println(nsae.getMessage());&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  MD5 hashing: Encodes a string ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) JForum Team&lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, &lt;br /&gt;
 * with or without modification, are permitted provided &lt;br /&gt;
 * that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 * 1) Redistributions of source code must retain the above &lt;br /&gt;
 * copyright notice, this list of conditions and the &lt;br /&gt;
 * following  disclaimer.&lt;br /&gt;
 * 2)  Redistributions in binary form must reproduce the &lt;br /&gt;
 * above copyright notice, this list of conditions and &lt;br /&gt;
 * the following disclaimer in the documentation and/or &lt;br /&gt;
 * other materials provided with the distribution.&lt;br /&gt;
 * 3) Neither the name of &amp;quot;Rafael Steil&amp;quot; nor &lt;br /&gt;
 * the names of its contributors may be used to endorse &lt;br /&gt;
 * or promote products derived from this software without &lt;br /&gt;
 * specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT &lt;br /&gt;
 * HOLDERS AND CONTRIBUTORS &amp;quot;AS IS&amp;quot; AND ANY &lt;br /&gt;
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, &lt;br /&gt;
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF &lt;br /&gt;
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR &lt;br /&gt;
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL &lt;br /&gt;
 * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE &lt;br /&gt;
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, &lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES &lt;br /&gt;
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF &lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, &lt;br /&gt;
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER &lt;br /&gt;
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER &lt;br /&gt;
 * IN CONTRACT, STRICT LIABILITY, OR TORT &lt;br /&gt;
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN &lt;br /&gt;
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF &lt;br /&gt;
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE&lt;br /&gt;
 * &lt;br /&gt;
 * This file creation date: Mar 29, 2003 / 1:15:50 AM&lt;br /&gt;
 * The JForum Project&lt;br /&gt;
 * http://www.jforum.net&lt;br /&gt;
 */&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Encodes a string using MD5 hashing &lt;br /&gt;
 * &lt;br /&gt;
 * @author Rafael Steil&lt;br /&gt;
 * @version $Id: MD5.java,v 1.7 2006/08/23 02:13:44 rafaelsteil Exp $&lt;br /&gt;
 */&lt;br /&gt;
public class MD5 &lt;br /&gt;
{&lt;br /&gt;
  /**&lt;br /&gt;
   * Encodes a string&lt;br /&gt;
   * &lt;br /&gt;
   * @param str String to encode&lt;br /&gt;
   * @return Encoded String&lt;br /&gt;
   * @throws NoSuchAlgorithmException&lt;br /&gt;
   */&lt;br /&gt;
  public static String crypt(String str)&lt;br /&gt;
  {&lt;br /&gt;
    if (str == null || str.length() == 0) {&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;String to encript cannot be null or zero length&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    StringBuffer hexString = new StringBuffer();&lt;br /&gt;
    &lt;br /&gt;
    try {&lt;br /&gt;
      MessageDigest md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
      md.update(str.getBytes());&lt;br /&gt;
      byte[] hash = md.digest();&lt;br /&gt;
      &lt;br /&gt;
      for (int i = 0; i &amp;lt; hash.length; i++) {&lt;br /&gt;
        if ((0xff &amp;amp; hash[i]) &amp;lt; 0x10) {&lt;br /&gt;
          hexString.append(&amp;quot;0&amp;quot; + Integer.toHexString((0xFF &amp;amp; hash[i])));&lt;br /&gt;
        }       &lt;br /&gt;
        else {&lt;br /&gt;
          hexString.append(Integer.toHexString(0xFF &amp;amp; hash[i]));&lt;br /&gt;
        }       &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    catch (NoSuchAlgorithmException e) {&lt;br /&gt;
      throw new RuntimeException(&amp;quot;&amp;quot; + e);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    return hexString.toString();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  MD5 MessageDigest your message ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.security.DigestInputStream;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    MessageDigest m = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    FileInputStream fin = new FileInputStream(args[0]);&lt;br /&gt;
    DigestInputStream din = new DigestInputStream(fin, m);&lt;br /&gt;
    din.on(false);&lt;br /&gt;
    int b;&lt;br /&gt;
    while ((b = din.read()) != -1) {&lt;br /&gt;
      if (b == &amp;quot;X&amp;quot;) {&lt;br /&gt;
        din.on(true);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    byte s[] = m.digest();&lt;br /&gt;
    for (int i = 0; i &amp;lt; s.length; i++) {&lt;br /&gt;
      System.out.print( Integer.toHexString((0x000000ff &amp;amp; s[i]) | 0xffffff00).substring(6));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  MD5 String ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    GNU LESSER GENERAL PUBLIC LICENSE&lt;br /&gt;
    Copyright (C) 2006 The Lobo Project&lt;br /&gt;
    This library is free software; you can redistribute it and/or&lt;br /&gt;
    modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
    License as published by the Free Software Foundation; either&lt;br /&gt;
    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
    This library is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
    Lesser General Public License for more details.&lt;br /&gt;
    You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
    License along with this library; if not, write to the Free Software&lt;br /&gt;
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
    Contact info: lobochief@users.sourceforge.net&lt;br /&gt;
*/&lt;br /&gt;
import java.io.UnsupportedEncodingException;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
public class Strings&lt;br /&gt;
{&lt;br /&gt;
  private static final MessageDigest MESSAGE_DIGEST;&lt;br /&gt;
  public static final String[] EMPTY_ARRAY = new String[0];&lt;br /&gt;
  static {&lt;br /&gt;
      MessageDigest md;&lt;br /&gt;
      try {&lt;br /&gt;
          md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
      } catch(NoSuchAlgorithmException err) {&lt;br /&gt;
        throw new IllegalStateException();&lt;br /&gt;
      }&lt;br /&gt;
      MESSAGE_DIGEST = md;&lt;br /&gt;
  }&lt;br /&gt;
  private static final String HEX_CHARS = &amp;quot;0123456789ABCDEF&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  public static String getMD5(String source) {    &lt;br /&gt;
      byte[] bytes;&lt;br /&gt;
      try {&lt;br /&gt;
        bytes = source.getBytes(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;
      } catch(java.io.UnsupportedEncodingException ue) {&lt;br /&gt;
        throw new IllegalStateException(ue);&lt;br /&gt;
      }&lt;br /&gt;
      byte[] result;&lt;br /&gt;
      synchronized(MESSAGE_DIGEST) {&lt;br /&gt;
          MESSAGE_DIGEST.update(bytes);&lt;br /&gt;
          result = MESSAGE_DIGEST.digest();&lt;br /&gt;
      }&lt;br /&gt;
      char[] resChars = new char[32];&lt;br /&gt;
      int len = result.length;&lt;br /&gt;
      for(int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
          byte b = result[i];&lt;br /&gt;
          int lo4 = b &amp;amp; 0x0F;&lt;br /&gt;
          int hi4 = (b &amp;amp; 0xF0) &amp;gt;&amp;gt; 4;&lt;br /&gt;
          resChars[i*2] = HEX_CHARS.charAt(hi4);&lt;br /&gt;
          resChars[i*2 + 1] = HEX_CHARS.charAt(lo4);&lt;br /&gt;
      }&lt;br /&gt;
      return new String(resChars);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static String getHash32(String source) throws UnsupportedEncodingException {&lt;br /&gt;
      String md5 = getMD5(source);&lt;br /&gt;
      return md5.substring(0, 8);&lt;br /&gt;
  }      &lt;br /&gt;
  public static String getHash64(String source) throws UnsupportedEncodingException {&lt;br /&gt;
      String md5 = getMD5(source);&lt;br /&gt;
      return md5.substring(0, 16);&lt;br /&gt;
  }   &lt;br /&gt;
  &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  MD5 your password ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    String name = &amp;quot;name&amp;quot;;&lt;br /&gt;
    String passwd = &amp;quot;password&amp;quot;;&lt;br /&gt;
    MessageDigest m = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    m.update(passwd.getBytes(&amp;quot;UTF8&amp;quot;));&lt;br /&gt;
    byte s[] = m.digest();&lt;br /&gt;
    String result = &amp;quot;&amp;quot;;&lt;br /&gt;
    for (int i = 0; i &amp;lt; s.length; i++) {&lt;br /&gt;
      result += Integer.toHexString((0x000000ff &amp;amp; s[i]) | 0xffffff00).substring(6);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(name);&lt;br /&gt;
    System.out.println(result);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*name&lt;br /&gt;
5f4dcc3b5aa765d61d8327deb882cf99*/&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Password Authenticator ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.ByteArrayOutputStream;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    authenticatePassword(&amp;quot;password&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  private static void authenticatePassword(String password) throws Exception {&lt;br /&gt;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();&lt;br /&gt;
    FileInputStream fis = new FileInputStream(&amp;quot;password&amp;quot;);&lt;br /&gt;
    int theByte = 0;&lt;br /&gt;
    while ((theByte = fis.read()) != -1) {&lt;br /&gt;
      baos.write(theByte);&lt;br /&gt;
    }&lt;br /&gt;
    fis.close();&lt;br /&gt;
    byte[] hashedPasswordWithSalt = baos.toByteArray();&lt;br /&gt;
    baos.reset();&lt;br /&gt;
    byte[] salt = new byte[12];&lt;br /&gt;
    System.arraycopy(hashedPasswordWithSalt, 0, salt, 0, 12);&lt;br /&gt;
    MessageDigest md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    md.update(salt);&lt;br /&gt;
    md.update(password.getBytes(&amp;quot;UTF8&amp;quot;));&lt;br /&gt;
    byte[] digest = md.digest();&lt;br /&gt;
    byte[] digestInFile = new byte[hashedPasswordWithSalt.length - 12];&lt;br /&gt;
    System.arraycopy(hashedPasswordWithSalt, 12, digestInFile, 0,&lt;br /&gt;
        hashedPasswordWithSalt.length - 12);&lt;br /&gt;
    System.out.println(Arrays.equals(digest, digestInFile));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Password Storage Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.ByteArrayOutputStream;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    createPassword(&amp;quot;password&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  private static void createPassword(String password) throws Exception {&lt;br /&gt;
    SecureRandom random = new SecureRandom();&lt;br /&gt;
    byte[] salt = new byte[12];&lt;br /&gt;
    random.nextBytes(salt);&lt;br /&gt;
    MessageDigest md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    md.update(salt);&lt;br /&gt;
    md.update(password.getBytes(&amp;quot;UTF8&amp;quot;));&lt;br /&gt;
    byte[] digest = md.digest();&lt;br /&gt;
    FileOutputStream fos = new FileOutputStream(&amp;quot;password&amp;quot;);&lt;br /&gt;
    fos.write(salt);&lt;br /&gt;
    fos.write(digest);&lt;br /&gt;
    fos.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Set password salt ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    String name = &amp;quot;name&amp;quot;;&lt;br /&gt;
    String passwd = &amp;quot;password&amp;quot;;&lt;br /&gt;
    Random rand = new Random();&lt;br /&gt;
    byte[] salt = new byte[12];&lt;br /&gt;
    rand.nextBytes(salt);&lt;br /&gt;
    MessageDigest m = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;);&lt;br /&gt;
    m.update(salt);&lt;br /&gt;
    m.update(passwd.getBytes(&amp;quot;UTF8&amp;quot;));&lt;br /&gt;
    byte s[] = m.digest();&lt;br /&gt;
    String result = &amp;quot;&amp;quot;;&lt;br /&gt;
    for (int i = 0; i &amp;lt; s.length; i++) {&lt;br /&gt;
      result += Integer.toHexString((0x000000ff &amp;amp; s[i]) | 0xffffff00).substring(6);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(name);&lt;br /&gt;
    for (int i = 0; i &amp;lt; salt.length; i++) {&lt;br /&gt;
      System.out.print(salt[i] + &amp;quot;,&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(result);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*name&lt;br /&gt;
72,83,-8,78,-82,125,0,-37,-116,-83,-72,27,460a21b49082e5268a4016bfa2e2885c*/&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>