转摘自:
http://school.cfan.com.cn/pro/java/2007-08-29/1188351839d99193.shtml
源码
/**
* 类名: MD5Digest<br>
* 说明: 用来进行密码加密的md5公用参数<br>
* 编写日期: 2001/03/05<br>
* 修改者: <br>
* 修改信息: <br>
* @author edgarlo edgarlo@china.com
* @version 1.0<br>
*/
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Digest
{
private MessageDigest __md5 = null;
private StringBuffer __digestBuffer = null;
public MD5Digest()
throws NoSuchAlgorithmException
{
__md5 = MessageDigest.getInstance("MD5");
__digestBuffer = new StringBuffer();
}
public String md5crypt(String s)
{
__digestBuffer.setLength(0);
byte abyte0[] = __md5.digest(s.getBytes());
for(int i = 0; i < abyte0.length; i++)
__digestBuffer.append(toHex(abyte0[i]));
return __digestBuffer.toString();
}
public String toHex(byte one){
String HEX="0123456789ABCDEF";
char[] result=new char[2];
result[0]=HEX.charAt((one & 0xf0) >> 4);
result[1]=HEX.charAt(one & 0x0f);
String mm=new String(result);
return mm;
}
}
--------------------------------------------------------------------------------
/************************************************
MD5 算法的Java Bean
@author:Topcat Tuppin
Last Modified:10,Mar,2001
*************************************************/
package beartool;
import java.lang.reflect.*;
/*************************************************
md5 类实现了RSA Data Security, Inc.在提交给IETF
的RFC1321中的MD5 message-digest 算法。
*************************************************/
public class MD5 {
/* 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的,
这里把它们实现成为static final是表示了只读,切能在同一个进程空间内的多个
Instance间共享*/
static final int S11 = 7;
static final int S12 = 12;
static final int S13 = 17;
static final int S14 = 22;
static final int S21 = 5;
static final int S22 = 9;
static final int S23 = 14;
static final int S24 = 20;
static final int S31 = 4;
static final int S32 = 11;
static final int S33 = 16;
static final int S34 = 23;
static final int S41 = 6;
static final int S42 = 10;
static final int S43 = 15;
static final int S44 = 21;
static final byte[] PADDING = { -128, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
/* 下面的三个成员是MD5计算过程中用到的3个核心数据,在原始的C实现中
被定义到MD5_CTX结构中
*/
private long[] state = new long[4]; // state (ABCD)
private long[] count = new long[2]; // number of bits, modulo 2^64 (lsb first)
private byte[] buffer = new byte[64]; // input buffer
/* digestHexStr是MD5的唯一一个公共成员,是最新一次计算结果的
16进制ASCII表示.
*/
public String digestHexStr;
/* digest,是最新一次计算结果的2进制内部表示,表示128bit的MD5值.
*/
private byte[] digest = new byte[16];
/*
getMD5ofStr是类MD5最主要的公共方法,入口参数是你想要进行MD5变换的字符串
返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的.
*/
public String getMD5ofStr(String inbuf) {
md5Init();
md5Update(inbuf.getBytes(), inbuf.length());
md5Final();
digestHexStr = "";
for (int i = 0; i < 16; i++) {
digestHexStr += byteHEX(digest[i]);
}
return digestHexStr;
}
// 这是MD5这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数
public MD5() {
md5Init();
return;
}
reference:
1.
http://mkchen.bokee.com/2353383.htmlMD5加密
2.
http://school.cfan.com.cn/pro/java/2007-08-29/1188351839d99193.shtml在JSP中如何实现MD5加密
3.
http://baike.baidu.com/view/7636.htm百度百科md5
4.
http://www.520hack.com/Article/Text2/crackjc/200905/14403.html教你如何轻松解密Md5密码
private static void Md5(String plainText ) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if(i<0) i+= 256;
if(i<16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
System.out.println("result: " + buf.toString());//32位的加密
System.out.println("result: " + buf.toString().substring(8,24));//16位的加密
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
经验证没有问题可用.
分享到:
相关推荐
总结一下,这个资源提供了一个在JSP中实现MD5加密功能的JavaBean,适用于Tomcat 7.0和JDK 1.6环境,通过作者提供的博客链接,用户可以获取使用教程和进一步的解释。这个JavaBean是解决JSP项目中用户密码安全存储问题...
本话题主要探讨如何在JSP(JavaServer Pages)和JavaScript中实现MD5加密。 首先,我们要理解MD5的基本原理。MD5算法接收一个输入(可以是任意长度的字符串),通过一系列复杂的数学运算,将其转化为128位的二进制...
在jsp网页中实现MD5加密可以使用JavaBean来实现。MD5类实现了RSA Data Security公司的MD5 message-digest算法。该类中定义了一些静态final变量,用于存储MD5算法中的矩阵值。这些矩阵值用于计算MD5哈希值。 MD5类还...
在JSP中实现MD5加密的基本步骤如下: 1. 引入`java.security.MessageDigest`库。 2. 实例化`MessageDigest`对象,并指定算法为MD5。 3. 使用`digest()`方法对字符串进行哈希计算,这会返回一个字节数组。 4. 将字节...
在JSP中实现MD5加密方法涉及了多个方面的知识点,包括JSP基础、MD5加密技术原理以及Java编程技巧。下面将详细介绍这些知识点。 首先,JSP(Java Server Pages)是一种动态网页技术,允许开发者将Java代码嵌入到HTML...
总之,这个压缩包提供的资源可以帮助开发者快速地在JSP环境中实现MD5加密功能,无论是直接使用还是进行定制,都能提高开发效率。但要注意,对于存储用户密码等重要信息,应考虑使用更为安全的加密策略。
以下是关于MD5加密算法及其在JSP中应用的详细知识点: 1. **MD5原理**: - MD5算法由Ronald Rivest在1991年设计,它将输入信息经过多次迭代运算后生成一个固定长度的摘要。这个摘要对输入信息极其敏感,微小的变动...
本项目"Servlet+jsp实现的有验证码和MD5加密的登陆"是一个典型的Web登录系统,它结合了数据库操作、前端展示和安全机制,具体涉及以下几个关键知识点: 1. **Servlet**:Servlet是Java编写服务器端应用程序的接口,...
在JSP(JavaServer Pages)中,我们也可以实现MD5加密。 在JSP中使用MD5加密通常涉及以下步骤: 1. **引入必要的库**:JSP默认并没有内置MD5加密功能,因此我们需要引入`java.security.MessageDigest`类来完成MD5...
在给定的资源中,我们看到四种语言的MD5加密实现:JavaScript、JSP、Java和ASP,以及一个与jQuery相关的MD5实现。下面将分别介绍这些语言中的MD5加密方法: 1. **JavaScript**: JavaScript是一种轻量级的脚本语言...
MD5(Message-Digest Algorithm 5 信息摘要算法),是一种不可逆的加密算法,主要被应用于确保信息传输的完整一致性与系统登录认证这两方面。
本主题涉及的是在Java后台与前端JavaScript之间利用AES(Advanced Encryption Standard)进行加解密,以及前端的MD5(Message-Digest Algorithm 5)加密技术。以下是关于这些知识点的详细解释: 1. **AES加密**:...
在本案例中,使用JavaBean来封装MD5算法的实现细节,从而实现代码的模块化和复用性。具体实现方法包括: - 创建一个名为`MD5Encryptor`的JavaBean类,包含必要的属性和方法,例如`encrypt(String data)`方法用于加密...
jsp md5 加密算法 实现加密 1
以下是一个简单的MD5加密的Java程序,用于说明如何在JSP环境中使用MD5加密: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Tool { // 主方法...