`
ygsilence
  • 浏览: 336847 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MD5码校验

    博客分类:
  • java
 
阅读更多
[size=medium]
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.nio.MappedByteBuffer;  
import java.nio.channels.FileChannel;  
import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  

public class MD5Util {
	
	/** 
     * 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合 
     */  
    protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6',  
            '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };  
  
    protected static MessageDigest messagedigest = null;  
    static {  
        try {  
            messagedigest = MessageDigest.getInstance("MD5");  
        } catch (NoSuchAlgorithmException nsaex) {  
            System.err.println(MD5Util.class.getName()  
                    + "初始化失败,MessageDigest不支持MD5Util。");  
            nsaex.printStackTrace();  
        }  
    }  
      
    /** 
     * 生成字符串的md5校验值 
     *  
     * @param s 
     * @return 
     */  
    public static String getMD5String(String s) {  
        return getMD5String(s.getBytes());  
    }  
      
    /** 
     * 判断字符串的md5校验码是否与一个已知的md5码相匹配 
     *  
     * @param strGet 要校验的字符串 
     * @param strMd5String 已知的md5校验码 
     * @return 
     */  
    public  boolean checkMd5(String strMd5String,String strGet) {  
    	String MD5 = getMD5String(strGet);
    	System.out.println("本地MD5码:"+MD5);
 //     String MD5 = "12345";
    	return MD5.equals(strMd5String);  
    }  
      
    /** 
     * 生成文件的md5校验值 
     *  
     * @param file 
     * @return 
     * @throws IOException 
     */  
    public static String getFileMD5String(File file) throws IOException {         
        InputStream fis;  
        fis = new FileInputStream(file);  
        byte[] buffer = new byte[1024];  
        int numRead = 0;  
        while ((numRead = fis.read(buffer)) > 0) {  
            messagedigest.update(buffer, 0, numRead);  
        }  
        fis.close();  
        return bufferToHex(messagedigest.digest());  
    }  
  
    /** 
     * JDK1.4中不支持以MappedByteBuffer类型为参数update方法,并且网上有讨论要慎用MappedByteBuffer, 
     * 原因是当使用 FileChannel.map 方法时,MappedByteBuffer 已经在系统内占用了一个句柄, 
     * 而使用 FileChannel.close 方法是无法释放这个句柄的,且FileChannel有没有提供类似 unmap 的方法, 
     * 因此会出现无法删除文件的情况。 
     *  
     * 不推荐使用 
     *  
     * @param file 
     * @return 
     * @throws IOException 
     */  
    public static String getFileMD5String_old(File file) throws IOException {  
        FileInputStream in = new FileInputStream(file);  
        FileChannel ch = in.getChannel();  
        MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,  
                file.length());  
        messagedigest.update(byteBuffer);  
        return bufferToHex(messagedigest.digest());  
    }  
  
    public static String getMD5String(byte[] bytes) {  
        messagedigest.update(bytes);  
        return bufferToHex(messagedigest.digest());  
    }  
  
    private static String bufferToHex(byte bytes[]) {  
        return bufferToHex(bytes, 0, bytes.length);  
    }  
  
    private static String bufferToHex(byte bytes[], int m, int n) {  
        StringBuffer stringbuffer = new StringBuffer(2 * n);  
        int k = m + n;  
        for (int l = m; l < k; l++) {  
            appendHexPair(bytes[l], stringbuffer);  
        }  
        return stringbuffer.toString();  
    }  
  
    private static void appendHexPair(byte bt, StringBuffer stringbuffer) {  
        char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字节中高 4 位的数字转换, >>> 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同   
        char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换   
        stringbuffer.append(c0);  
        stringbuffer.append(c1);  
    }  
      
    /*
    public static void main(String[] args) throws IOException {  
        long begin = System.currentTimeMillis();  
  
        File file = new File("C:/12345.txt");  
        String md5 = getFileMD5String(file);  
    }
    */
}

[/size]
分享到:
评论

相关推荐

    软件信息MD5码校验工具

    用户可以利用MD5码校验工具,对比自己下载的文件与官方提供的MD5码是否一致。如果一致,说明文件在传输过程中未被篡改或损坏;如果不一致,可能表明文件在下载、存储或传输过程中出现了问题,或者文件已被恶意修改。...

    32位MD5密码校验

    这种转化过程是单向的,即从数据生成MD5值相对容易,但若想从MD5值反推原始数据则几乎不可能,这就是MD5的主要特性,常用于数据的完整性校验和密码存储。 32位MD5密码校验是指通过计算数据的MD5摘要,然后与预知的...

    SHA1码MD5码校验器

    SHA1码和MD5码是两种广泛用于数据完整性和文件校验的哈希函数。它们在IT领域扮演着至关重要的角色,确保了文件在传输、存储或复制过程中的完整性。 SHA1(Secure Hash Algorithm 1)是一种加密散列函数,产生一个...

    MD5码校验工具

    因此,MD5常用于数据校验,比如在下载大型软件或文件后,通过比对下载文件的MD5码与官方提供的MD5码是否一致,来判断文件在传输过程中是否被篡改。 MD5码的生成过程包括以下几个步骤: 1. **填充**:将输入的数据...

    MD5 checksum小工具,用MD5码校验文件完整性

    MD5 checksum小工具,用MD5码校验文件完整性

    md5值校验工具

    1. **生成MD5值**:首先,你需要使用MD5校验工具对目标文件进行计算,工具会读取文件内容并应用MD5算法生成一个唯一的32位十六进制数字,这就是文件的MD5摘要。 2. **验证MD5值**:当获取到文件来源提供的正确MD5值...

    MD5 校验 对比 加密

    在实际应用中,如果你需要进行MD5校验和对比,可以使用各种工具,例如命令行工具`md5sum`(在Unix/Linux系统中)或者Windows自带的“证书管理”工具。对于编程,很多编程语言都有内置的库函数支持MD5计算,如Python...

    Hash (MD5码校验工具)

    相信时常下载软件的朋友们会发现一些下载网站有提供下载文件的MD5码。到底MD5(哈希值)码有什么用处呢? 有了MD5码,您便可以知道您所下载的文件是否完整无缺,这对下载大型档案尤其重要! 使用: 文件下载后,...

    申万宏源MD5码校验码计算器 申银万国MD5码校验码计算器 v10.8.31

    MD5码校验的过程通常是这样的:首先,用户在申银万国的官方网站上获取到所需软件的MD5码,这个MD5码是由原始软件文件计算得出的。接着,用户下载该软件到本地,然后使用MD5码校验码计算器对下载后的文件进行计算,...

    JAVA生成MD5校验码

    在JAVA中,生成MD5校验码涉及到以下几个关键知识点: 1. **`java.security.MessageDigest` 类**:这是Java标准库提供的一个类,用于实现各种散列算法,包括MD5。通过`getInstance("MD5")`方法可以获得MD5的实例。 ...

    md5验证工具MD5校验器

    MD5码校验器是检测你下的软件的安全性的,主要是看有没有被人改动过,如捆绑不良程序等,没有其他用处。 MD5中的MD代表Message Digest,就是信息摘要的意思,不过这个信息摘要不是信息内容的缩写,而是根据公开...

    MD5文件校验工具

    MD5文件校验工具是一种在IT领域中广泛使用的软件,其主要功能是验证文件的完整性和安全性。MD5,全称Message-Digest Algorithm 5,是由Ron Rivest开发的一种哈希函数,它能够将任意长度的数据转化为固定长度的128位...

    MD5加密和JS 校验码MD5加密和JS 校验码

    例如,服务器返回一个文件的MD5校验码,用户在下载文件后,前端JS可以再次计算文件的MD5并比对,以确保下载的文件与服务器上的文件一致。 总结起来,MD5加密和JS校验码在IT行业中扮演着重要的角色。MD5用于数据加密...

    文件MD5码较验工具

    然后,使用MD5码校验工具(如“MD5Check.exe”)对下载或接收的文件进行校验。 "MD5Check.exe"是一款简单易用的MD5码校验工具。按照描述中的使用方法,我们可以这样做: 1. 首先,运行MD5Check.exe程序。这个程序...

    文件校验工具 MD5 校验王 5.9.8.0 绿色中文免费版.zip

    文件校验工具 MD5 校验王中文版文件校验工具 MD5 校验王中文版 MD5 校验王可以对任意文件进行版本,文件时间,MD5值,SHA1值,CRC32值的校验。 计算选项: 版本:当选择校验文件为exe或者dll文件时,在运算结果中...

    文件校验工具 CRC32 MD5 HASH校验码自动计算工具

    在给定的“文件校验工具 CRC32 MD5 HASH校验码自动计算工具”中,我们主要关注三种常见的校验技术:CRC32、MD5和HASH。 1. CRC32(Cyclic Redundancy Check 32): CRC32是一种广泛使用的错误检测方法,通过计算...

    MD5Check校验码生成器.zip

    MD5Check校验码生成器是一个实用工具,主要用于在MCU(微控制器)固件升级过程中验证文件的完整性和一致性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的...

    MD5校验器,校验MD5码

    3. **固定长度输出**: 不论输入数据多大,MD5总是会产生固定长度的128位散列,这就是我们所说的MD5校验码。 4. **防碰撞性**: 理论上,两个不同的输入不应产生相同的MD5值,但在实际中,由于MD5的碰撞(即不同输入...

    MD5值校验工具绿色版

    什么是MD5码? MD5码是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。... 我们可以通过对比同一文件的MD5码,来校验这个文件是否被“篡改”过。

    md5校验码生成工具软件免安装

    MD5校验码生成工具是IT领域中一种实用的小型应用程序,主要用来验证文件的完整性和真实性。在软件分发、文件传输或者备份过程中,MD5校验码扮演着重要的角色,确保文件在传输过程中没有被篡改或损坏。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics