当前位置:  编程技术>java/j2ee

java使用计算md5校验码方式比较两个文件是否相同

    来源: 互联网  发布时间:2014-11-05

    本文导语:  代码如下:public class MD5Check {/*** 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合*/    protected char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', '...

代码如下:

public class MD5Check {
/**
* 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合
*/
    protected char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
    protected  MessageDigest messagedigest = null;

    {
        try {
            messagedigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

    public 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());
    }

    public String getFileMD5String(InputStream in) throws IOException {
        byte[] buffer = new byte[1024];
        int numRead = 0;
        while ((numRead = in.read(buffer)) > 0) {
            messagedigest.update(buffer, 0, numRead);
        }
        in.close();
        return bufferToHex(messagedigest.digest());
    }

    private String bufferToHex(byte bytes[]) {
        return bufferToHex(bytes, 0, bytes.length);
    }

    private 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 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);
    }

}


    
 
 

您可能感兴趣的文章:

  • Java字节码校验 BECL
  • JAVA有用于数据校验的类吗?象加密算法那样的.
  • java使用正则表达校验手机号码示例(手机号码正则)
  • Web服务器/前端 iis7站长之家
  • 利用Java正则表达式校验邮箱与手机号
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • 听说,初学JAVA有两个开源程序是必看的,请问是哪两个。在那里下载?
  • Java中如何比较两个数组中元素是否相同
  • 请问:java.rmi.* javax.naming.* 这两个库是应用什么方面的
  • java与网页相关的两个问题
  • 请问两个JAVA问题,一个很浅、一个可能很深
  • 运行了2个java程序,怎样区分两个程序?
  • java 基础:两个类之间的联系问题
  • 请问:哪里有下载Visibroker for java?我找到了两个地方,但是无法下载?(在线等待)
  • 各位,能不能多提供两个能下载design pattern的java中文版的网址!
  • 两个非常简单的问题,给40分 (才学2天JAVA人的问题)
  • jsp(java)里面怎么求两个日期之间的天数?
  • 在同一目录下的两个java文件连不起来
  • VisualAge for Java 和 Visual Cafe 这两个工具怎么样?各自的最高版本是多少?
  • 同一目录下的两个.java文件使用package时遇到的问题(详情请进)
  • 初学者问题:假设有A.java和B.java两个文件在同一目录下。。。。。。
  • 请问怎么在java里连接两个byte型数组?
  • JAVA JODBC中怎样连续操作两个(或以上)的SQL语句
  • Java两个变量的互换(不借助第3个变量)具体实现方法
  • 如何编译两个java文件?如sphere.java,createspheres.java
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java实现判断字符串是否全是数字的四种方法代码举例
  • 请大家评价一下Thinking in Java第二版(中文)这本书如何,是否适合JAVA初学者?
  • java判断日期字符是否有效(在线等待答案)
  • 在线等待:在Java中是否有权限修改一个文件的权限?
  • 请问哪位参加过JAVA认证考试,是否有例题?
  • 是否有在Dos6.22平台下的Java虚拟机?
  • Java 中是否有象MessageBox一样的类或方法
  • 如何检测一个java.sql.ResultSet对象是否eof?
  • java applet和servlet之间是否可以传递对象?
  • 讨论:Java是否适合编写通常的应用程序?
  • java判断远程服务器上的文件是否存在的方法
  • 请问既会JAVA又会VC的大侠:JAVA调试时是否有类似于VC中的TRACE功能
  • JAVA的类库中是否有正则表达式这样的东东?
  • Java的类是否区分大小写?
  • 在java中如何判断目录是否存在
  • 如何检验Java虚拟机是否存在??? 谢谢 在线求答!!!
  • sun的Solaris8(SPARC版)是否已有java开发环境?
  • 我是学pb的,有一个问题想请教各位java的朋友,j2ee平台是什么啊?如果要用这个平台的开发pb的话是否要学java??
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • borland 的JBUILDER 是否是最优秀的JAVA编译器?
  • java的applet中是否有将一个字符串转为对象处理?如:"Label1"转为Label?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3