`

java获取大文件的MD5、SHA1,CRC32码

阅读更多

原文链接:http://blog.csdn.net/mylmhcj/article/details/50616908

 

import org.apache.commons.codec.digest.DigestUtils;  

import java.io.File;  

import java.io.FileInputStream;  

import java.io.FileNotFoundException;  

import java.io.IOException;  

import java.nio.MappedByteBuffer;  

import java.nio.channels.FileChannel;  

import java.security.MessageDigest;  

import java.security.NoSuchAlgorithmException;  

import java.util.zip.CRC32;  

  

public class FileSafeCode {  

    /** 

     * 计算大文件 md5获取getMD5(); SHA1获取getSha1() CRC32获取 getCRC32() 

     */  

    protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6',  

            '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };  

    public static MessageDigest messagedigest = null;  

  

    /** 

     * 对一个文件获取md5值 

     *  

     * @return md5串 

     * @throws NoSuchAlgorithmException 

     */  

    public static String getMD5(File file) throws IOException,  

            NoSuchAlgorithmException {  

  

        messagedigest = MessageDigest.getInstance("MD5");  

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

    }  

  

     /**  

     * @param target 字符串 求一个字符串的md5值 

     * @return md5 value 

     */  

    public static String StringMD5(String target) {  

        return DigestUtils.md5Hex(target);  

    }  

      

    /*** 

     * 计算SHA1码 

     *  

     * @return String 适用于上G大的文件 

     * @throws NoSuchAlgorithmException 

     * */  

    public static String getSha1(File file) throws OutOfMemoryError,  

            IOException, NoSuchAlgorithmException {  

        messagedigest = MessageDigest.getInstance("SHA-1");  

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

    }  

  

    /** 

     * 获取文件CRC32码 

     *  

     * @return String 

     * */  

    public static String getCRC32(File file) {  

        CRC32 crc32 = new CRC32();  

        // MessageDigest.get  

        FileInputStream fileInputStream = null;  

        try {  

            fileInputStream = new FileInputStream(file);  

            byte[] buffer = new byte[8192];  

            int length;  

            while ((length = fileInputStream.read(buffer)) != -1) {  

                crc32.update(buffer, 0, length);  

            }  

            return crc32.getValue() + "";  

        } catch (FileNotFoundException e) {  

            e.printStackTrace();  

            return null;  

        } catch (IOException e) {  

            e.printStackTrace();  

            return null;  

        } finally {  

            try {  

                if (fileInputStream != null)  

                    fileInputStream.close();  

            } catch (IOException e) {  

                e.printStackTrace();  

            }  

        }  

    }  

  

    public static String getMD5String(String s) {  

        return getMD5String(s.getBytes());  

    }  

  

    public static String getMD5String(byte[] bytes) {  

        messagedigest.update(bytes);  

        return bufferToHex(messagedigest.digest());  

    }  

  

    /** 

     * @Description 计算二进制数据 

     * @return String 

     * */  

    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];  

        char c1 = hexDigits[bt & 0xf];  

        stringbuffer.append(c0);  

        stringbuffer.append(c1);  

    }  

  

    public static boolean checkPassword(String password, String md5PwdStr) {  

        String s = getMD5String(password);  

        return s.equals(md5PwdStr);  

    }  

 

}  

分享到:
评论

相关推荐

    Check:Java写的编码校验小工具。可以计算文本、文件的MD5、SHA-1、CRC32等校验值

    Check Java写的编码校验小工具。可以计算文本、文件的MD5、SHA-1、CRC32等校验值。

    md5 哈希算法 数据完整性验证工具

    md5 SHA 哈希算法 数据完整性验证工具 非常小 提供三种算法:MD5 SHA1 CRC 算法

    基于Java开发的校验码工具.zip

    使用Java开发的桌面应用程序,可用于查看字符串和文件的校验码。支持MD5、SHA1和CRC32三种校验算法。

    JPassword Recovery Tool:用于压缩档案和 md5、sha-1/2 哈希的密码恢复工具-开源

    它还可以对 Windows 和 Linux 的 MD2、MD5、SHA-1 和 SHA-2 哈希(SHA-256、SHA-384、SHA-512)、CRC16、CRC32、CRC64 和 Adler32 哈希密码进行暴力破解。 它需要 java 7u4 及更高版本,以及 7-zip v9.20 及更高...

    jdk-13.0.2_windows-x64_bin.exe-JDK13Java开发工具包Windows版

    JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境 Java SE Development Kit 13 - Downloads ...CRC32 :49C8DC58

    imhex-功能强大的十六进制编辑器,开源软件

    文件哈希支持:CRC16、CRC32、MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。反汇编程序支持多种不同的体系结构:ARM32 (ARM, Thumb, Cortex-M, AArch32)、ARM64、MIPS (MIPS32, MIPS64, MIPS32R6, Micro)...

    ImHex:一款功能强大的十六进制编辑器

    文件哈希支持:CRC16、CRC32、MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。 反汇编程序支持多种不同的体系结构:ARM32 (ARM, Thumb, Cortex-M, AArch32)、ARM64、MIPS (MIPS32, MIPS64, MIPS32R6, Micro...

    ImHex软件.zip

    软件说明: ...具有自定义初始值和多项式的 CRC16 和 CRC32 MD4、MD5 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 支持许多不同架构的反汇编程序 ARM32(ARM、Thumb、Cortex-M、AArch32) ARM64 MIP

    jdk-8u241-windows-x64.zip-JDK1.8Java开发工具包Windows版

    JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境 Java SE Development Kit 1.8 - Downloads ...CRC32 :6F3ED649

    JAVA8SE_jdk-8u211-windows-x64.zip

    64位jdk,本论坛下载的,分个流,官网下载太费劲了。 文件名称:JAVA8SE_jdk-8u211-windows-x64.zip 文件大小:223687779 字节 MD5 :B3A80F5ADF6CE2A0C56A18709B52A3ED SHA1 :07278D4CA0AF4885AB...CRC32 :090611F9

    encryption.zip

    aes、crc32、des/3des、dh、dsa、ecdsa、elgamal、idea、md2/md4/md5、pbe、rsa、sha1/sha224/sha256/sha512。 所有算法的实现均是JDK官方实现或者是Apache的开源实现,本人不对算法做任何单独实现。所以关于算法...

    jdk-8u231-windows-x64.exe 安装版

    文件名称:C:\Users\LBWNB\Desktop\jdk-8u231-windows-x64\jdk-8u231-windows-x64.exe 文件大小:220392992 字节 文件版本:8.0.2310.11 修改时间:2019年11月11日 13:31:03 MD5 :F8A35AB83D651DC...CRC32 :5D7E32D1

    Java加密与解密的艺术

    可以攻玉1094.1 加固你的系统1094.2 加密组件Bouncy Castle 1114.3 辅助工具Commons Codec 1204.4 小结121第二部分实践篇第5章电子邮件传输算法—Base64 1345.1 Base64算法的由来1345.2 Base64算法的定义1345.3 Base...

    nexus-3.36.0-01-win64.zip

    不用再每个人都从中央仓库下载存储库、依赖文件,还可以上传自定义构件,精简了本地内部仓库的维护和外部仓库的访问,极大的提高团队和个人的开发效率,配合maven、java等统一了开发环境。 *支持开箱即用、支持...

    jcrypto:Java 密码库

    #Java 加密框架 #Summary 这是一个实现了一些加密算法的小 ...SHA1 SHA256 SHA512 MD5 ###其他 HMAC ###对称密钥算法 AES 山茶花(进行中) RC4 RC5(进行中) ###编码 Base64 ###校验和 CRC #参考书目

    SweetScape 010 Editor 8 汉化版

    能够进行包括 CRC-16、CRC-32、Adler32、MD2、MD4、MD5、RIPEMD160、SHA-1、SHA-256和 TIGER 在内的较验和或散列计算。 转载声明: 声明:大眼仔旭 | 本文采用[BY-NC-SA]协议进行授权 文章名称:《专业文本/十六进制...

    ImHex16進制編輯器.7z

    帶有自定義初始值和多項式的 CRC16 和 CRC32 MD4、MD5 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 支持多種不同架構的反彙編器 ARM32(ARM、拇指、Cortex-M、AArch32) ARM64 MIPS(MIPS32、MIPS64、MIPS32R6、微型...

    Java加密与解密的艺术配书源代码

    可以攻玉109 4.1 加固你的系统109 4.2 加密组件Bouncy Castle 111 4.3 辅助工具Commons Codec 120 4.4 小结121 第二部分实践篇 第5章电子邮件传输算法—Base64 134 5.1 Base64算法的由来134 5.2 Base64算法的定义134...

    java-hash-program

    它产生多种校验和,包括:MD5、SHA-1、SHA-256 和 CRC32。 您可以通过编译在com.js.jhash找到的 java 文件,使用命令提示符运行程序。 如果您使用 Eclipse 作为您选择的 IDE,您可以git clone项目并使用 Eclipse ...

    HxD HeX Editor 英文绿色版

    CRC-32, Custom CRC, SHA-1, SHA-256, SHA-384, SHA-512, MD-2, MD-4, MD5 - Statistical view: Graphical representation of the character distribution. Helps to identify the data-type of a selection. - ...

Global site tag (gtag.js) - Google Analytics