`
make19830723
  • 浏览: 34482 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

关于文件MD5加密的通用类

    博客分类:
  • java
阅读更多
自己在原来的类上做了些修改可以。大家帮我查考查考
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 e) {  
            e.printStackTrace();  
        }  
    }  
  
    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());  
    }  
    
    public static String getStringMD5(String str){
    	 byte[] buffer=str.getBytes();
    	 messagedigest.update(buffer);
    	return bufferToHex(messagedigest.digest());
    }
  
    public 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);  
    }  
}  


分享到:
评论

相关推荐

    C++ 实现 MD5加密 非常好用

    在C++中实现MD5加密,主要涉及以下几个关键步骤和知识点: 1. **MD5算法的基本流程**: - 分块:MD5处理的消息被分为512位(64字节)的块。 - 初始化:使用一组初始值初始化四个32位的变量A、B、C和D。 - 扩展...

    spark-md5-js中通用的md5加密

    Spark-md5是一个用JavaScript编写的快速、高效的md5库。它根据MD5算法,将输入的任意长度的明文,经过一系列的操作,转换...Spark-md5实现了在浏览器中对文件进行哈希计算,并且在上传文件时可有效检测文件是否被篡改。

    MD5加密java和android通用

    在Java中,MD5加密通常通过`java.security.MessageDigest`类实现。以下是一个简单的Java MD5加密示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public ...

    MD5密码加密文档

    `PwdEncoder.java`可能是另一个通用的密码编码接口或抽象类,它定义了密码编码的基本操作,而`Md5PwdEncoder`可能是实现这个接口的具体类。这样的设计遵循了面向对象编程中的"接口隔离原则",使得系统更易于扩展和...

    MD5加密算法C++源代码

    在压缩包中的"MD5加密算法VC++"文件可能是一个实现了MD5算法的C++源代码项目,适用于Visual C++开发环境。该项目可能包含了MD5类的定义、实现和测试用例。你可以通过编译和运行这个项目来验证其正确性,也可以通过...

    MD5.rar_加密

    下面是一个简单的MD5加密通用代码示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Formatter; public class MD5 { public static String ...

    MD5加密算法C++实现

    源代码通常会有一个主函数,如`main()`,它接收用户输入或者读取文件,调用MD5函数进行加密,并打印出结果。你可以通过编译和运行这个程序来验证其MD5加密功能是否正确。不过,由于具体实现没有提供,这里无法给出...

    Delphi md5加密单元及DEMO.rar_DEMO_Delphi md5加密单元及DEMO_delphi md5_delp

    4. **Tools.dcu**:可能包含了辅助工具或通用函数,如字符串操作、文件处理等,这些可能在MD5加密过程中有用。 5. **md5_test_main.ddp**:这是Delphi项目的项目文件,记录了项目的配置信息,如源文件、编译选项等...

    visual c++ md5加密算法完整源代码.zip

    描述中的内容再次确认了这是一个关于MD5加密算法的Visual C++实现,用户可以下载这个zip文件来查看和使用这些源代码。 标签中提到的关键词:"visual c++"指的是微软开发的C++集成开发环境,"md5"是核心主题,"加密...

    C# MD5加密算法

    回到C#语言环境下的MD5加密实现,我们可以看到在给定的代码片段中,程序员利用了.NET Framework提供的`System.Security.Cryptography`命名空间下的`MD5CryptoServiceProvider`类来实现MD5加密功能。下面是对这段代码...

    md5加密算法(JS和C++实现).zip

    在Windows平台上,还提供了可执行文件,这可能是将C++编译的MD5程序打包成的,用户可以直接运行以快速计算MD5值,而无需编译源代码。 在安全方面,虽然MD5因为其碰撞漏洞(即能找到两个不同的输入数据产生相同的MD5...

    可以直接调用的c++实现的MD5加密算法函数

    在这个案例中,提供的"可以直接调用的c++实现的MD5加密算法函数"应该是一个经过验证的、可以直接集成到其他C++项目中的MD5计算模块。这种函数通常会包含以下几个关键部分: 1. **初始化**: 初始化MD5状态变量。MD5...

    java接口 参数MD5加密.zip

    这个类通常包含MD5加密的核心方法,如`toMD5(String input)`,它接收一个字符串作为输入,通过MD5算法计算出其对应的128位哈希值,通常以32位的16进制字符串形式返回。MD5Utils还可能包括其他辅助方法,如将二进制...

    visual c++ vc MD5加密算法源代码+DLL成品.zip

    1. **md5.clw**:这是VC++的类工作空间文件,记录了项目中类的相关信息。 2. **md5.cpp**:这个文件包含了MD5加密算法的具体实现。MD5算法通常由四个不同的处理步骤组成:初始化、列混淆、行混淆和结果的转换,这些...

    md5加密算法的c++代码实现

    根据给定的文件信息,我们可以总结出以下关于“MD5加密算法的C++代码实现”的详细知识点: ### MD5加密算法简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,它可以将任意长度的信息转换为一个...

    主题:用JAVA类实现MD5加密-----MakeMD5.java

    根据给定的文件信息,我们可以深入探讨如何使用Java类实现MD5加密,这在现代软件开发,特别是涉及用户数据安全的场景中极为重要。MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,它能将任意长度的数据...

    C#_加密解密类_DES_3DES_MD5

    ### C#中的加密解密类:DES、3DES与MD5 #### 一、概述 在C#中,实现数据加密解密的功能是确保信息安全的关键技术之一。本篇将详细介绍如何利用C#来实现DES(Data Encryption Standard)、3DES(Triple Data ...

    MD5加密JAVA

    这个类提供了一种通用的方法来生成消息摘要,包括MD5。以下是一个简单的MD5加密的Java代码示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5...

    spark-md5-js中通用的md5加密源码

    MD5是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常表示为32个十六进制数字。在Web开发中,MD5常用于数据校验、密码存储以及生成唯一标识等场景。 Spark-md5-js库的亮点在于它的高效性和兼容...

    MD5加密算法

    **MD5加密算法:原理、实现与应用** **一、引言** MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由Ronald L. Rivest在1992年开发。它是一种密码散列函数,用于数据完整性验证和数字签名,其目的是...

Global site tag (gtag.js) - Google Analytics