import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* MD5 转化类
*
* @author Fu Wei
*
*/
public class MD5Utils {
private static final Logger LOG = LoggerFactory
.getLogger(MD5Utils.class);
public static byte[] getMd5Key(byte[] buffer, byte[] key) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(buffer);
return md5.digest(key);
} catch (NoSuchAlgorithmException e) {
}
return null;
}
/**
* 输入原文 返回MD5码
*
* @param strSrc
* @param key
* @param encode
* @return
*/
public static String getMd5Key(String strSrc, String key, String encode) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(strSrc.getBytes(encode));
String result = "";
byte[] temp;
temp = md5.digest(key.getBytes(encode));
for (int i = 0; i < temp.length; i++) {
result += Integer.toHexString(
(0x000000ff & temp[i]) | 0xffffff00).substring(6);
}
return result;
} catch (NoSuchAlgorithmException e) {
LOG.error("MD5计算出错", e);
} catch (Exception e) {
LOG.error("MD5装换出错", e);
}
return null;
}
}
分享到:
相关推荐
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它能够将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常表示为32位的十六进制数。MD5的主要用途...
以下将详细介绍C++中MD5类的设计思路以及相关知识点。 首先,`md5c.c`和`md5class.cpp`可能是包含MD5算法核心实现的源文件。`md5c.c`可能是一个简化的C语言版本的MD5实现,而`md5class.cpp`则可能是将MD5算法封装成...
在Java中,MD5加密通常通过`java.security.MessageDigest`类实现。以下是一个简单的Java MD5加密示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public ...
2. **C#中的MD5类库**:在C#中,`System.Security.Cryptography`命名空间提供了`MD5`类,我们可以利用这个类来实现MD5的加密操作。例如,可以创建一个MD5实例,然后使用`ComputeHash()`方法对输入的数据进行哈希运算...
标题中的"文件-AES-MD5-Upload-Minio工具类.zip"提到了四个关键概念:AES、MD5、Upload(上传)以及Minio,这些都是与文件操作、加密和云存储相关的技术。下面将对这些知识点进行详细的解释和探讨。 首先,AES...
在MFC环境中实现这一过程,开发者可能会使用`CFile`类来处理文件读取,`CString`类来存储和显示MD5值,以及可能自定义的MD5计算类来封装MD5算法的具体逻辑。由于VC++6.0的年代较早,代码可能不包含现代C++的特性,如...
根据给定的文件信息,我们可以深入探讨如何使用Java类实现MD5加密,这在现代软件开发,特别是涉及用户数据安全的场景中极为重要。MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,它能将任意长度的数据...
`PwdEncoder.java`可能是另一个通用的密码编码接口或抽象类,它定义了密码编码的基本操作,而`Md5PwdEncoder`可能是实现这个接口的具体类。这样的设计遵循了面向对象编程中的"接口隔离原则",使得系统更易于扩展和...
MD5是一种广泛使用的加密散列函数,可将任意长度的数据转化为固定长度的128位(16字节)摘要,通常以32位的十六进制数字表示。在软件开发、数据校验和安全领域,MD5发挥着至关重要的作用。 Lua MD5插件的核心功能...
MD5的工作原理是通过一系列的数学运算,包括异或、位移、加法等,将输入的数据转化为固定长度的摘要信息。由于MD5的不可逆性,即无法通过摘要信息推导出原始数据,因此它常用于检验文件的完整性。当你下载一个文件后...
MD5函数将文本内容转化为一个固定的32位十六进制数,确保内容的唯一性。 4. **写入文件**:将得到的MD5值写入新的文件中。易语言的“写入文本文件”命令可用于此目的,将MD5值作为文本写入指定的输出文件。 5. **...
MD5WithRSA签名是一种结合了MD5哈希函数和RSA加密的签名方法。它先对原始数据进行MD5哈希,然后用私钥对哈希值进行加密,得到的签名可以用公钥验证。在Delphi中,可以使用Indy库中的TIdHashMD5和TRsa对象完成这一...
在Java中实现MD5算法,可以使用`java.security.MessageDigest`类。这个类提供了创建不同哈希算法实例的方法,包括MD5。 下面是一个简单的MD5哈希计算的Java源代码示例: ```java import java.security....
MD5散列加密算法是一种广泛应用于信息安全领域的强效工具,主要功能是将任意长度的数据转化为固定长度的摘要信息。这个算法由Ronald L. Rivest在1991年提出,是早期的MD4算法的加强版。MD5全称为Message-Digest ...
C++实现MD5加密时,你需要创建一个MD5类,该类可以接受字节序列并逐步执行上述步骤。你可能需要定义一些辅助函数来执行位操作,以及处理32位整数的加法和异或。最后,将得到的128位摘要转换为32位的十六进制字符串,...
3. `main.cpp`:主程序入口,用于测试MD5加密算法的实现,通常会有一个简单的示例来演示如何使用MD5类或函数。 4. `MD5.dsp`:这是Visual Studio早期版本的项目文件,用于构建和管理项目。 5. `MD5.dsw`:Visual ...
开发者可能已经编写了一个名为MD5的类,里面包含了计算MD5摘要的方法,并且可能封装了与原始MD5算法相关的低级操作,如位操作和循环。 `MD5算法标准RFC1321.txt`文件是MD5算法的官方文档,RFC(Request for ...
C++是一种通用的、面向对象的编程语言,具有高效和灵活的特点,因此它是实现MD5算法的理想选择。 描述中提到"在Linux环境下实现",这意味着代码可能利用了Linux操作系统提供的某些特性或工具,如标准输入输出、...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由Ronald Rivest在1991年设计。它能够将任意长度的数据转化为一个固定长度的摘要,通常为128位,以16进制表示就是32个字符。MD5的主要应用包括数据完整...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它将任意长度的数据转化为一个128位(16字节)的固定长度摘要,通常以32位的十六进制数表示。这个过程是不...