一点关于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简介》
结束
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简介》
结束
相关文章推荐
- MD5文件加密以及关于NIO中的FileChannel.map的一点看法
- 关于认知计算的一点浏览和摘录
- 关于 高斯算法计算某数可以被分割成连续自然数之和的组数 个人的一点拙见
- 日常记录——关于数组下标计算的一点心得
- 关于echarts3.0散点图的一点封装
- 关于用优先级队列和树解决中缀表达式计算的一点比较
- 关于对象数据封装的一点感悟
- 关于封装的一点想法
- 黑马韩前成关于云计算的一点学习计划和声明
- 关于java散列算法(MD5 SHA-1 SHA-128 SHA-256..)的一点总结
- 关于网络层的封装的一点想法
- 关于封装的一点想法
- 关于多核多CPU多线程和并行计算的一点补充
- 关于android的Asset文件夹和画图的一点问题
- 关于大文本(txt)导入sqlserver2008数据库的一点感想
- 关于 数据文件自增长 的一点理解
- 关于神经网络的一点猜想
- 关于窗体(Windows Form)的CreateParams(属性或参数)的一点总结!
- 关于轻量级数据库SQLite一个简单的SQLiteHelper访问数据库封装类