`
huanyq2008
  • 浏览: 172176 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

取文件MD5的应用

阅读更多
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; 

public class MD5Util {
/**
* 默认的密码字符串组合,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();
   }
} 

/**
* 适用于上G大的文件
* @param file
* @return
* @throws IOException
* 此方法慎用,FileChannel.map后不会释放资源,会导致文件被锁定
*/
public static String getFileMD5String(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);
   String md5Str = bufferToHex(messagedigest.digest());
   byteBuffer.flip();
   ch.close();
   in.close();
   return md5Str; 
} 

public static String MD5File(File file) {
    byte[] buf = new byte[4096]; //这个byte[]的长度可以是任意的。
    MessageDigest md;
    boolean fileIsNull = true;

    try {
        FileInputStream fis = new FileInputStream(file);
        int len = 0;
        md = MessageDigest.getInstance("MD5");

        len = fis.read(buf);
        if (len > 0) {
            fileIsNull = false;
            while (len > 0){
                md.update(buf, 0, len);
                len = fis.read(buf);
            }
        }
        fis.close();
    } catch (Exception e) {
        return null;
    }
    
    if (fileIsNull)
        return null;
    else
        return bufferToHex(md.digest());
}


public static String getMD5String(String s) {
   return getMD5String(s.getBytes());
} 

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

}

 

分享到:
评论

相关推荐

    易语言取多文件 文件夹、文件MD5(带进度条)能取多文件MD5码 速度很快 带进度条.rar

    具体到本资源中的实现,核心程序“取文件MD5(带进度条).e”很可能是易语言开发的项目文件,其中整合了MD5哈希计算与进度条的实时更新逻辑。程序运行时,它会遍历指定的文件夹,并对每一个文件执行MD5哈希计算。在...

    易语言源码易语言取文件MD5源码.rar

    在本压缩包"易语言源码易语言取文件MD5源码.rar"中,包含的是一段使用易语言编写的用于计算文件MD5值的源代码。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为一个...

    VC/MFC 获取文件MD5值 获取大文件MD5值

    4. **使用计算MD5的函数**:在你的MFC应用程序中,调用这个函数,传入你想要计算MD5值的文件路径,然后就可以得到文件的MD5值了。 5. **处理大文件**:在上述代码中,我们使用了一个固定大小的缓冲区读取文件,这种...

    易语言取多文件 文件夹、文件MD5(带进度条)能取多文件MD5码 速度很快 带进度条.zip

    在其丰富的生态中,易语言取多文件夹、文件的MD5哈希值,并附带进度条显示的功能,是易语言社区中的一个实用工具,它不仅提高了工作效率,还优化了用户体验。 MD5算法,作为一种广泛使用的哈希函数,其核心功能在于...

    取文件MD5值易语言源码例程

    在这个“取文件MD5值易语言源码例程”中,我们可以了解到如何利用易语言来实现这一功能。首先,你需要导入易语言的“网络支持库”,该库提供了计算MD5值所需的函数。然后,可以调用“文件打开”命令打开要计算的文件...

    易语言取文件MD5值例程

    总之,易语言取文件MD5值是通过读取文件、调用外部函数计算MD5、转换结果并显示的过程。这个过程涵盖了文件操作、函数调用、数据转换等多个编程基础概念,对于提升编程技能大有裨益。通过实践这个例程,你将更好地...

    易语言大文件取MD5不卡带进度

    最后,当所有线程完成工作后,主线程将各线程计算的MD5块合并成最终的文件MD5。合并过程通常涉及到异或运算,将每个块的MD5值进行异或操作,得到的结果就是整个文件的MD5。 总的来说,"易语言大文件取MD5不卡带进度...

    易语言_API取文件MD5例程

    "易语言_API取文件MD5例程"是一个示例程序,它展示了如何在易语言中通过API调用来计算文件的MD5值。这个过程主要涉及到Windows API函数和易语言的编程技巧。 首先,我们需要了解什么是易语言。易语言是一门中国本土...

    易语言进度取大文件MD5码源码

    在标题和描述中提到的“易语言进度取大文件MD5码源码”是一个针对易语言的编程示例,主要涉及到两个关键概念:大文件处理和MD5哈希计算。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意...

    Md5工具(包括取字符串和文件的MD5)

    2. 计算文件的MD5值:工具会读取文件的全部内容,通过MD5算法生成一个唯一的MD5校验和。这个校验和可以作为验证文件完整性的依据。例如,在下载大文件时,下载完成后可以使用MD5工具对比官方提供的MD5值,确保文件...

    获取字符串MD5&获取文件MD5(vb.net)

    上述代码定义了一个名为`MD5Calculator`的类,包含了两个静态方法:`GetStringMD5`用于计算字符串的MD5值,`GetFileMD5`用于计算文件的MD5值。`ConvertToHex`方法用于将字节数组转换为十六进制字符串。 5. **应用...

    文件MD5效验工具

    文件MD5效验工具是专门用于计算和验证文件MD5值的软件。它能够读取指定文件,并通过MD5算法计算出该文件的唯一标识——MD5哈希值。这个哈希值就像文件的指纹,即使文件内容只有一点微小的变化,MD5值也会显著不同。...

    遍历一个文件夹并生成所有文件的MD5

    在IT领域,尤其是在数据安全和文件验证中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,能够将任意长度的数据转化为固定长度的摘要值。这个摘要值是唯一的,可以用来验证文件的完整性和原始性。当...

    易语言源码取文件MD5值易语言源码例程.7z

    总的来说,易语言源码取文件MD5值的例程提供了文件完整性验证的一种方法,对于开发、文件传输校验等领域都有实际的应用价值。通过学习和理解这个例程,你可以掌握易语言与底层系统交互的能力,以及如何利用哈希算法...

    易语言分段取MD5

    易语言是一种专为中国人设计的编程语言,它以简明直观的中文语法为特色,使得初学者能够更...通过分析和理解这段源码,开发者可以掌握易语言中处理大文件MD5计算的方法,这对于文件校验、数据传输验证等场景非常有用。

    Delphi取文件的sha-md5值

    在IT行业中,尤其是在软件开发领域,验证文件的完整性和真实性是一项重要的...如果你的压缩包文件"sha-md5"包含了实现这一功能的源代码或执行文件,那么你可以进一步研究这些代码,学习如何在实际项目中应用这些技术。

    易语言取MD5的模块

    这个"易语言取MD5的模块"源码提供了在易语言中计算字符串或文件MD5值的功能。使用这样的模块,开发者无需深入了解MD5算法的实现细节,只需简单调用模块提供的接口,即可快速地获取到所需的结果。这对于易语言的程序...

    取16位MD5.rar

    3. 数据签名:在软件发布时,开发者会提供软件的MD5值,用户可以通过比对下载后的文件MD5值来验证软件的真实性,防止被篡改。 4. 版本控制:在版本控制系统中,如Git,文件的变更会通过计算新旧版本的MD5值来快速...

Global site tag (gtag.js) - Google Analytics