Java tutorial
/** * Copyright (C) 2010 Cloudfarming <info@cloudfarming.nl> * * Licensed under the Eclipse Public License - v 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //package nl.cloudfarming.client.util; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * * @author Timon Veenstra */ public class MD5Sum { /** * Create a MD5 checksum for a file * * @param filename * @return md5sum * @throws Exception */ public static byte[] createChecksum(InputStream fis) throws NoSuchAlgorithmException, IOException { if (fis == null) { throw new FileNotFoundException("InputStream cannot be read"); } byte[] buffer = new byte[1024]; MessageDigest complete = MessageDigest.getInstance("MD5"); int numRead; do { numRead = fis.read(buffer); if (numRead > 0) { complete.update(buffer, 0, numRead); } } while (numRead != -1); fis.close(); return complete.digest(); } static final String HEXES = "0123456789abcdef"; /** * convert byte into a hax encoded string * * @param raw * @return */ public static String getHex(byte[] raw) { if (raw == null) { return null; } final StringBuilder hex = new StringBuilder(2 * raw.length); for (final byte b : raw) { hex.append(HEXES.charAt((b & 0xF0) >> 4)).append(HEXES.charAt((b & 0x0F))); } return hex.toString(); } }