MD5 即:Message-Digest Algorithm 5 (信息-摘要算法),可以保证信息传输的一致,是一种常用的散列算法之一,也可以看做是哈希算法,它将数据运算为128-bits长度的值,用32位的十六进制数字表示。
md5加密用法:
String getStringFromEntryInternal(T entry) {
String s = getStringFromEntry(entry);
return StringUtil.signContent(s, getSalt());
}
/**
* salt在编码后的串里不可见
*
* @return
*/
public String getSalt() {
return StringUtil.EMPTY;
}
public class StringUtil {
public static final String EMPTY = "";
public static String signContent(String rawContent, String salt) {
String md5 = md5(rawContent + salt);
return rawContent + md5;
}
}
md5解密算法:
T getEntryFromStringInternal(String str) {
String raw = StringUtil.getRawContent(str, getSalt());
// System.out.println("getEntryFromStringInternal:" + str);
if (raw != null)
return getEntryFromString(raw);
else {
return null;
}
}
public static String getRawContent(String signedContent, String salt) { // rawContent这里作为一个输出参数
String rtn = null;
if (signedContent == null)
return null;
int len = signedContent.length();
if (len <= 32)
return null;
String md5 = signedContent.substring(len - 32);// 最后32位
// System.out.println("validateSignedContent.md5:" + md5);
rtn = signedContent.substring(0, len - 32);// 原始内容
// System.out.println("validateSignedContent.rtn:" + rtn);
if (md5.equalsIgnoreCase(md5(rtn + salt)))
return rtn;
return null;
}
测试:
public class TTTT {
public static void main(String[] args){
String sss="this id";
String mds55=StringUtil.signContent(sss, "");
System.out.println(mds55);
System.out.println(mds55.length());
String unmds55=StringUtil.getRawContent(mds55, "");
System.out.println(unmds55);
}
}
测试结果:
this id46a6f3c92d33264c365fbb495afbe7a6
39
this id
分享到:
相关推荐
在本项目中,"md5算法实例"可能是实现了一个简单的MD5计算功能,用户可以通过输入任何值,程序会返回这个值经过MD5算法处理后的哈希结果。这样的实例通常涉及以下编程知识点: 1. **哈希函数**:理解哈希函数的基本...
### Java中的MD5算法 #### 一、简介 在计算机科学领域中,MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意长度的数据转换为固定长度的128位(16字节)哈希值。由于其独特的特性,MD5被...
在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的是为了产生一个固定长度的、不可逆的数字摘要,常用于存储密码。MD5算法将任意长度的输入(也叫做预映射,pre-image)通过...
总结,Java实现MD5加密算法主要是通过`java.security.MessageDigest`类,经过`getInstance("MD5")`获取MD5实例,然后使用`digest()`和`update()`方法处理数据,最终将二进制摘要转换为十六进制字符串。尽管MD5的安全...
### MD5算法在Java中的实现 #### 一、概述 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,它能够将任意长度的数据转换为一个固定长度(通常是128位)的十六进制字符串。这种转换通常被称为“摘要”...
这个"JAVA实现MD5算法.rar"压缩包包含了一个名为"MD5Util.java"的文件,我们可以从中学习如何在Java程序中实现MD5加密。 首先,MD5Util.java文件很可能定义了一个类`MD5Util`,这个类通常包含了一系列静态方法,以...
### MD5算法在Java中的实现 #### 一、概述 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,它能够将任意长度的数据转换为一个固定长度(通常是128位)的十六进制字符串。由于其计算速度快且结果不...
本文将详细讲解如何在Java中使用MD5进行数据加密。首先,你需要了解MD5的基本原理:MD5算法通过一系列复杂的数学运算,将输入的数据转化为一个固定的128位摘要,这个摘要对于原始数据是唯一的,但即使只改变输入数据...
在Java中,我们可以使用`java.security.MessageDigest`类来实现MD5算法。以下是一个简单的示例代码: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class...
在Java中,实现MD5算法通常涉及到`java.security.MessageDigest`这个类。这个类提供了一种标准的方式来计算各种消息摘要,包括MD5。 下面我们将详细讨论MD5算法以及如何在Java中实现它。 MD5算法的核心思想是通过...
对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载
在Java编程语言中,MD5算法通常用于生成固定长度的128位(16字节)摘要,这个摘要通常以32位十六进制数字的形式呈现。 在给定的"MD5_java.rar"压缩包中,包含了两个文件:`MD5_java.java`和`www.pudn.com.txt`。`MD...
在标签"md5_java md5.ja java_md5 md5 md5_java_realization"中,除了重复的信息外,"md5_java"再次强调了这是MD5算法的Java实现,"java_md5"和"md5"是关键词,表明了主题与Java语言和MD5算法相关。 压缩包内的两个...
由于MD5算法本身是标准的,理论上在任何支持MD5的编程语言中都应该得到相同的输出,不论是在Java还是C#中。然而,实际编码时可能会因为字符串编码格式、字节顺序等问题导致结果不一致,因此这里的目标是确保两种语言...
在Java中,MD5常用于数据的完整性校验和密码存储,因为其产生的摘要具有不可逆性,即无法通过摘要反推出原始数据。下面我们将深入探讨MD5加密在Java中的实现及其应用。 MD5加密的基本原理是,对输入的数据进行一...
在`getMD5`方法中,我们通过`getInstance("MD5")`获取一个MD5实例。然后,我们使用`digest()`方法对输入字符串的字节数组进行哈希计算,得到的结果是16字节的二进制数组。为了将这个二进制数组转换为可读的十六进制...
在给出的压缩包文件中,`md.txt`可能包含了使用上述Java MD5实现计算出的哈希值,而`www.pudn.com.txt`可能是从网站pudn.com下载的资料,可能包含有关MD5算法的进一步信息或者示例代码。 MD-RBAC(Role-Based ...
Java中实现MD5加密算法的简单实例主要介绍了如何使用Java语言来实现MD5加密算法,提供了一个简单的实例帮助大家应用这样的加密算法。MD5加密算法是一种不可逆的加密算法,破解的难度很高,通常将加密后的密文保存在...
在Java中,可以通过`java.security.MessageDigest`类来实现MD5算法。 #### 二、MD5加密原理 MD5算法将任意长度的消息压缩成一个固定长度(通常是128位)的散列值。该散列值具有以下特点: 1. **不可逆性**:从...
- **getMD5 方法**:该方法接收一个`File`对象作为参数,通过`MessageDigest.getInstance("MD5")`获取MD5算法实例,然后使用`FileInputStream`读取文件内容。读取时采用缓冲机制提高效率,每读取一部分数据就调用`...