您的位置:首页 > 其它

一点关于MD5计算的封装

2012-12-23 20:14 381 查看
本文参考:http://snowolf.iteye.com/blog/379860
MD5 是message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?MD5是用于对信息生成信息摘要(即散列码)的算法之一。不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文件是否一致的 。关于信息摘要和散列码请参照《数字证书简介

关于MD5用于验证文件发放和收方是否一致的大概流程如图1所示

图1



 以下是对于MD5计算的一个简单包装类

MD5Util.java文件

package edu.edut.robin.utils;
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;import android.util.Log;
public class MD5Util{
    private static String encodingAlgorithm="MD5";        public final static byte[] md5sum(byte[] data) {        if(data == null || data.length == 0){            return null;        }        try {            MessageDigest mdTemp = MessageDigest.getInstance(encodingAlgorithm);            mdTemp.update(data);            return  mdTemp.digest();                    } catch (Exception e) {                    }
        return null;    }        static String convertToHexString(byte data[]) {        StringBuffer strBuffer = new StringBuffer();        for (int i = 0; i < data.length; i++) {         strBuffer.append(Integer.toHexString(0xff & data[i]));        }        return strBuffer.toString();       }    public static byte[] md5sum(File file) {        InputStream fis = null;        byte[] buffer = new byte[1024];        int numRead = 0;        MessageDigest md5;        try{            fis = new FileInputStream(file);            md5 = MessageDigest.getInstance(encodingAlgorithm);            while((numRead=fis.read(buffer)) > 0) {                md5.update(buffer,0,numRead);            }            return md5.digest();           } catch (Exception e) {            e.printStackTrace();            return null;        } finally{            if(fis != null){                try {                        fis.close();                    } catch (IOException e) {                        e.printStackTrace();                    }            }        }    }}

关于MessageDigest的更多内容请参考《MessageDigest简介

结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: