- package cn.itcast.gz;
- import java.io.File;
- import java.io.FileInputStream;
- import java.security.DigestInputStream;
- import java.security.MessageDigest;
- /**
- * 主要用于验证数据的完整性,可以为数据创建“数字指纹”(散列值),结果具有唯一性
- * 并且计算结果不可逆
- *
- */
- public class DigestInputStreamTest {
- public static void main(String[] args) throws Exception{
- MessageDigest messageDigest = MessageDigest.getInstance("MD5");
- //MessageDigest messageDigest = MessageDigest.getInstance("SHA");
- FileInputStream inputStream = new FileInputStream(new File("F:\\\\apache-tomcat-7.0.32.zip"));
- DigestInputStream digestInputStream = new DigestInputStream(inputStream, messageDigest);
- digestInputStream.on(true);
- byte[] buffer = new byte[1024];
- int len = 0;
- //流读入
- while((len=digestInputStream.read(buffer))!=-1)
- {
- digestInputStream.read(buffer, 0, len);
- }
- byte[] result = messageDigest.digest();
- System.out.println( bytes2HexString(result));
- inputStream.close();
- digestInputStream.close();
- }
- /**
- *把字节数组转换为16进制的形式
- * @param b
- * @return
- */
- public static String bytes2HexString(byte[] b) {
- String ret = "";
- for (int i = 0; i < b.length; i++) {
- String hex = Integer.toHexString(b[ i ] & 0xFF);
- if (hex.length() == 1) {
- hex = '0' + hex;
- }
- ret += hex.toUpperCase();
- }
- return ret;
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/130120148497.html
来源: http://www.codesnippet.cn/detail/130120148497.html