精华内容
下载资源
问答
  • 2021-02-28 14:06:45

    我正在使用Java为某些文件生成MD5哈希。我需要为多个文件生成一个MD5,总大小约为1 GB。这是我的代码:

    private String generateMD5(SequenceInputStream inputStream){

    if(inputStream==null){

    return null;

    }

    MessageDigest md;

    try {

    int read =0;

    byte[] buf = new byte[2048];

    md = MessageDigest.getInstance("MD5");

    while((read = inputStream.read(buf))>0){

    md.update(buf,0,read);

    }

    byte[] hashValue = md.digest();

    return new String(hashValue);

    } catch (NoSuchAlgorithmException e) {

    return null;

    } catch (IOException e) {

    return null;

    }finally{

    try {

    if(inputStream!=null)inputStream.close();

    } catch (IOException e) {

    // ...

    }

    }

    }

    这似乎永远存在。如何提高效率?

    更多相关内容
  • JAVA 生成文件MD5

    2019-08-03 01:17:22
    NULL 博文链接:https://kanpiaoxue.iteye.com/blog/1669100
  • Java生成文件md5文件方法的代码

    千次阅读 2019-09-06 11:23:02
    package pri.liyang.util; import java.io.*; import java.security.MessageDigest; import java.security....* 根据文件生成MD5码的工具类 * Author:李小白 */ public class MD5Util { /** ...

    package pri.liyang.util;

    import java.io.*;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;

    /**
     * 根据文件生成MD5码的工具类
     * Author:李小白
     */
    public class MD5Util {

        /**
         * 辅助方法
         * @param filename
         * @return
         */
        private static byte[] createChecksum(String filename) {
            InputStream fis = null;
            try {
                fis = new FileInputStream(filename);
                byte[] buffer = new byte[1024];
                MessageDigest complete = MessageDigest.getInstance("MD5");
                int numRead = -1;

                while ((numRead = fis.read(buffer)) != -1) {
                    complete.update(buffer, 0, numRead);
                }
                return complete.digest();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != fis) {
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;

        }

        /**
         * 生成文件的MD5码
         * @param filePath 文件路径
         * @return 该文件的MD5码
         */
        private static String generateMD5(String filePath){
            if (!new File(filePath).isFile()) {
                System.err.println("Error: " + filePath
                        + " is not a valid file.");
                return null;
            }
            byte[] b = createChecksum(filePath);
            if(null == b){
                System.err.println(("Error:create md5 string failure!"));
                return null;
            }
            StringBuilder result = new StringBuilder();

            for (int i = 0; i < b.length; i++) {
                result.append(Integer.toString((b[i] & 0xff) + 0x100, 16)
                        .substring(1));
            }
            return result.toString();
        }

        /**
         * 根据文件,在同一文件夹下生成相应的MD5文件,文件名相同,仅后缀名不同
         * 比如文件为helloworld.txt,生成MD5文件:helloworld.md5
         * @param filePath 文件绝对路径
         */
        public static void generateMD5File(String filePath) throws IOException {
            //获得该文件实例
            File file = new File(filePath);

            //获得该文件的MD5码
            String md5code = generateMD5(filePath);

            //获得该文件的文件夹路径
            String directoryPath = file.getParentFile().getAbsolutePath();

            //生成该文件对应的MD5文件的文件名
            String md5FileName = file.getName().substring(0, file.getName().lastIndexOf(".")) + ".md5";

            //获得该文件对应的MD5文件的绝对路径
            String md5FilePath = directoryPath + File.separator + md5FileName;

            //生成MD5文件
            File md5File = new File(md5FilePath);
            if(!md5File.exists()){
                md5File.createNewFile();
            }

            //文件写入MD5码的FileWriter类
            FileWriter fileWriter = new FileWriter(md5File);
            //将MD5码写入到MD5文件中
            fileWriter.write(md5code);
            //刷新流
            fileWriter.flush();
            //关流
            fileWriter.close();

            //打印提示信息
            System.out.println("创建MD5文件成功:" + md5FilePath);
        }


        /**
         * 输入文件夹名称,将该文件夹下所有的文件都生成同名的MD5文件
         * @param directoryPath
         */
        public static void generateMD5Files(String directoryPath) throws IOException {
            //创建文件夹实例
            File directory = new File(directoryPath);
            //文件数组
            File[] files = null;

            if(directory.isDirectory()){
                //获得所有文件
                files = directory.listFiles();
                //分别为每一个文件创建MD5文件
                for(int i=0; i<files.length; i++){
                    generateMD5File(files[i].getAbsolutePath());
                }
            }else{
                System.err.println("不是文件夹,请检查路径!");
                return;
            }

        }


        /**
         * 测试类
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
            //输入文件的绝对路径,生成该文件同一文件夹下的相同文件名,后缀名为.md5的文件
            generateMD5File("C:\\Users\\李小白\\Desktop\\MD5\\helloworld.txt");

            //输入文件夹的绝对路径,生成该文件夹下所有文件的MD5文件,该文件夹的文件数多一倍
            generateMD5Files("C:\\Users\\李小白\\Desktop\\MD5");
        }

    }
    本文链接:https://blog.csdn.net/weixin_39448458/article/details/81485522

    展开全文
  • package pri.liyang.util; import java.io.*; import java.security.MessageDigest; import java.security.... * 根据文件生成MD5码的工具类 * Author:李小白 */ public class MD5Util { /*...
    package pri.liyang.util;
    
    import java.io.*;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    /**
     * 根据文件生成MD5码的工具类
     * Author:李小白
     */
    public class MD5Util {
    
        /**
         * 辅助方法
         * @param filename
         * @return
         */
        private static byte[] createChecksum(String filename) {
            InputStream fis = null;
            try {
                fis = new FileInputStream(filename);
                byte[] buffer = new byte[1024];
                MessageDigest complete = MessageDigest.getInstance("MD5");
                int numRead = -1;
    
                while ((numRead = fis.read(buffer)) != -1) {
                    complete.update(buffer, 0, numRead);
                }
                return complete.digest();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != fis) {
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
    
        }
    
        /**
         * 生成文件的MD5码
         * @param filePath 文件路径
         * @return 该文件的MD5码
         */
        private static String generateMD5(String filePath){
            if (!new File(filePath).isFile()) {
                System.err.println("Error: " + filePath
                        + " is not a valid file.");
                return null;
            }
            byte[] b = createChecksum(filePath);
            if(null == b){
                System.err.println(("Error:create md5 string failure!"));
                return null;
            }
            StringBuilder result = new StringBuilder();
    
            for (int i = 0; i < b.length; i++) {
                result.append(Integer.toString((b[i] & 0xff) + 0x100, 16)
                        .substring(1));
            }
            return result.toString();
        }
    
        /**
         * 根据文件,在同一文件夹下生成相应的MD5文件,文件名相同,仅后缀名不同
         * 比如文件为helloworld.txt,生成MD5文件:helloworld.md5
         * @param filePath 文件绝对路径
         */
        public static void generateMD5File(String filePath) throws IOException {
            //获得该文件实例
            File file = new File(filePath);
    
            //获得该文件的MD5码
            String md5code = generateMD5(filePath);
    
            //获得该文件的文件夹路径
            String directoryPath = file.getParentFile().getAbsolutePath();
    
            //生成该文件对应的MD5文件的文件名
            String md5FileName = file.getName().substring(0, file.getName().lastIndexOf(".")) + ".md5";
    
            //获得该文件对应的MD5文件的绝对路径
            String md5FilePath = directoryPath + File.separator + md5FileName;
    
            //生成MD5文件
            File md5File = new File(md5FilePath);
            if(!md5File.exists()){
                md5File.createNewFile();
            }
    
            //文件写入MD5码的FileWriter类
            FileWriter fileWriter = new FileWriter(md5File);
            //将MD5码写入到MD5文件中
            fileWriter.write(md5code);
            //刷新流
            fileWriter.flush();
            //关流
            fileWriter.close();
    
            //打印提示信息
            System.out.println("创建MD5文件成功:" + md5FilePath);
        }
    
    
        /**
         * 输入文件夹名称,将该文件夹下所有的文件都生成同名的MD5文件
         * @param directoryPath
         */
        public static void generateMD5Files(String directoryPath) throws IOException {
            //创建文件夹实例
            File directory = new File(directoryPath);
            //文件数组
            File[] files = null;
    
            if(directory.isDirectory()){
                //获得所有文件
                files = directory.listFiles();
                //分别为每一个文件创建MD5文件
                for(int i=0; i<files.length; i++){
                    generateMD5File(files[i].getAbsolutePath());
                }
            }else{
                System.err.println("不是文件夹,请检查路径!");
                return;
            }
    
        }
    
    
        /**
         * 测试类
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
            //输入文件的绝对路径,生成该文件同一文件夹下的相同文件名,后缀名为.md5的文件
            generateMD5File("C:\\Users\\李小白\\Desktop\\MD5\\helloworld.txt");
            
            //输入文件夹的绝对路径,生成该文件夹下所有文件的MD5文件,该文件夹的文件数多一倍
            generateMD5Files("C:\\Users\\李小白\\Desktop\\MD5");
        }
    
    }
    
    展开全文
  • Java生成MD5的两种方式

    千次阅读 2021-04-08 15:32:56
    1 原生的 ...* MD5加密工具类 * @author pibigstar * */ public class MyMD5Util { //盐,用于混交md5 private static final String slat = "&%5123***&&%%$$#@"; public static...

    1 原生的

    package com.pibigstar.common.utils;
    
    import java.security.MessageDigest;
    
    /**
     * MD5加密工具类
     * @author pibigstar
     *
     */
    public class MyMD5Util {
        //盐,用于混交md5
        private static final String slat = "&%5123***&&%%$$#@";
        public static String encrypt(String dataStr) {
            try {
                dataStr = dataStr + slat;
                MessageDigest m = MessageDigest.getInstance("MD5");
                m.update(dataStr.getBytes("UTF8"));
                byte s[] = m.digest();
                String result = "";
                for (int i = 0; i < s.length; i++) {
                    result += Integer.toHexString((0x000000FF & s[i]) | 0xFFFFFF00).substring(6);
                }
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return "";
        }
    
    }

     
    2 使用Spring中的工具类

    package com.pibigstar.common.utils;
    
    import org.springframework.util.DigestUtils;
    
    import com.pibigstar.common.Constant;
    
    /**
     * MD5工具类
     * @author pibigstar
     *
     */
    public class MD5Util {
        //盐,用于混交md5
        private static final String slat = "&%5123***&&%%$$#@";
        /**
         * 生成md5
         * @param seckillId
         * @return
         */
        public static String getMD5(String str) {
            String base = str +"/"+slat;
            String md5 = DigestUtils.md5DigestAsHex(base.getBytes());
            return md5;
        }
    
    }
    
     

     

    展开全文
  • 主要介绍了java实现的MD5摘要算法,结合完整实例形式分析了java实现md5单项加密的具体步骤与相关操作技巧,需要的朋友可以参考下
  • JAVA生成MD5的方法

    2019-05-22 14:14:09
    public class MD5 { public static void main(String[] args) { String md5 = getMD5("210534"); System.out.println(md5); System.out.println(md5.length()); String encry...
  • # java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...
  • 加入我们想校验两个文件网络传输中是否改变了,或者校验两个文件是否一致可以使用md5校验。 代码: import java.io.FileInputStream; import java.io.InputStream; import java.math.BigInteger; import java....
  • java生成MD5校验码(文件/字符串)

    千次阅读 2017-04-22 00:01:36
    转自:http://blog.csdn.net/achang21/article/details/33741477 需要commons-codec包 文件 DigestUtils.md5Hex(new FileInputStream(new File("C:/1.txt"))) 字符串 DigestUtils.md5Hex("111")
  • 讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件。当得到用户下载某个文件的请求后它...查了下资料,java也可以实现文件md5校验码获取,代码如下:import java.io.File;import java.io.FileInp...
  • 生成文件的Hash码MD5

    2014-11-04 18:42:05
    Java程序。可以生成文件MD5哈希值。生成的Hash值可保存到txt文件中。程序完全可运行。
  • Java生成MD5算法

    2021-02-26 11:32:14
    MD5即Message-Digest Algorithm 5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法。MD5算法的作用是让大容量信息在用数字签名软件签私人密匙前被”压缩”成一种保密的格式,将一个任意长度的“字节串”通过...
  • 工作中遇到一个需要比较两个文件是否一致的问题,第一反应就是通过 MD5 比较,所以直接干代码。 为什么会写 Go 呢,纯属是最近在使用 Go 语言,然后顺便也整理一下。(就是为了让文章字数显得多 ) Java 实现 新建一...
  • 我用nio重写你的代码,代码有点像下面:private static String generateMD5(FileInputStream inputStream){if(inputStream==null){return ...try {md = MessageDigest.getInstance("MD5");FileChannel channel = ...
  • Java 生成文件MD5算法

    千次阅读 2015-02-04 17:15:43
    代码: import java.security.MessageDigest; import java.security.NoSuchAlgorithmException...public class MD5Util { private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7",
  • java快速生成文件MD5算法 MD5Util java
  • 能在windows下运行的exe文件,电脑必须装java环境,没有的话自行百度,用java语言开发的,要源码留下邮箱
  • 文章目录1、将文件转化为MD5之前首先要明白字符串转MD5是什么原理2、文件MD5加密也是先转换类型再通过工具加密 1、将文件转化为MD5之前首先要明白字符串转MD5是什么原理 字符串转MD5是通过先将字符串转化为byte[]...
  • java实现MD5加密.pdf

    2018-09-26 11:14:26
    MD5加密代码解析,加密技术详细剖析。
  • Java生成MD5签名的方法

    千次阅读 2018-01-13 17:32:24
    public static String md5(String content) { if (StringUtils.isBlank(content)) { return null; } try { byte[] b = content.getBytes("UTF-8"); MessageDigest md = Message
  • Java修改文件MD5值-yellowcong

    千次阅读 2017-07-15 16:17:10
    MD5是加密算法的一种,MD5对于每一个文件来说都是唯一的,在百度网盘、QQ的文件快传中,都是算文件MD5在本地的服务器上有没有,如果有直接就可以上传。但是有一个场景,就是我的文件在百度上是 违规的,我可以通过...
  • Gradle生成md5代码

    2015-12-03 09:45:09
    用Gradle生成md5代码,直接复制到build.gradle中然后调用这个方法即可
  • Java生成MD5的方法

    2019-05-22 14:16:38
    一、代码 public class MD5 { public static void main(String[] args) { String md5 = getMD5("210534"); System.out.println(md5); System.out.println(md5.length()); String...
  • 导致类似 js和java前后端加密不一致的情况,一定要前后端对接下MD5码的编码格式 我是看微信环境编码格式不对,暴力注销了其他编码方式,也能解决问题,一般不提倡,自己根据给到的demo来进行调用 ...
  • SHA1或MD5算法获取文件摘要值(JAVA)

    热门讨论 2013-07-31 15:49:05
    SHA1或MD5算法获取文件摘要值(JAVA)
  • MD5文件流直接生成

    2021-04-02 16:33:20
    确实很爽,后台接收到文件的时候直接调用方法生成MD5 //调用 MD5Util.getFileMD5String(tempFile); package com.jeecms.common.util; import java.io.File; import java.io.FileInputStream; import java.io...
  • JAVA获取文件MD5

    千次阅读 2017-07-24 20:20:56
    1.推荐如下方法: ... * 推荐此方法获取文件MD5 * @param path 文件路径 * @return */ public static String getMd5File(String path){ String md5 = null; try { FileInputStream fis= new FileI

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,753
精华内容 30,701
关键字:

java生成文件的md5

java 订阅