Android examples for File Input Output:File Hash
Returns the MD5 in base64 for the data from the given input stream.
/*/* w w w .j av a2 s . c om*/ * Copyright 2012-2014 Amazon Technologies, Inc. * * Portions copyright 2006-2009 James Murty. Please see LICENSE.txt * for applicable license terms and NOTICE.txt for applicable notices. * * Licensed under the Apache License, Version 2.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://aws.amazon.com/apache2.0 * * This file 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 com.java2s; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.util.Base64; import android.util.Log; public class Main { private static final int SIXTEEN_K = 1 << 14; /** * Returns the MD5 in base64 for the data from the given input stream. * Note this method closes the given input stream upon completion. */ public static String md5AsBase64(InputStream is) throws IOException { return Base64.encodeToString(computeMD5Hash(is), Base64.DEFAULT) .trim(); } /** * Returns the MD5 in base64 for the given byte array. */ public static String md5AsBase64(byte[] input) { return Base64.encodeToString(computeMD5Hash(input), Base64.DEFAULT) .trim(); } /** * Returns the MD5 in base64 for the given file. */ public static String md5AsBase64(File file) throws FileNotFoundException, IOException { return Base64.encodeToString(computeMD5Hash(file), Base64.DEFAULT) .trim(); } public static byte[] computeMD5Hash(InputStream is) throws IOException { BufferedInputStream bis = new BufferedInputStream(is); try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); byte[] buffer = new byte[SIXTEEN_K]; int bytesRead; while ((bytesRead = bis.read(buffer, 0, buffer.length)) != -1) { messageDigest.update(buffer, 0, bytesRead); } return messageDigest.digest(); } catch (NoSuchAlgorithmException e) { // should never get here throw new IllegalStateException(e); } finally { try { bis.close(); } catch (Exception e) { Log.e("ks3", "Unable to close input stream of hash candidate: " + e); } } } /** * Computes the MD5 hash of the given data and returns it as an array of * bytes. */ public static byte[] computeMD5Hash(byte[] input) { try { MessageDigest md = MessageDigest.getInstance("MD5"); return md.digest(input); } catch (NoSuchAlgorithmException e) { // should never get here throw new IllegalStateException(e); } } /** * Computes the MD5 of the given file. */ public static byte[] computeMD5Hash(File file) throws FileNotFoundException, IOException { return computeMD5Hash(new FileInputStream(file)); } }