以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  JAVA 的MD5加密算法源代码  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=13873)


--  作者:Qr
--  发布时间:1/20/2005 5:36:00 PM

--  JAVA 的MD5加密算法源代码
import java.security.*;
import java.security.spec.*;

class MD5_Test{

public final static String MD5(String s){
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
'e', 'f'};
try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
catch (Exception e){
return null;
}
}
public static void main(String[] args){
//MD5_Test aa = new MD5_Test();

System.out.print(MD5_Test.MD5("XX"));
}


--  作者:xmzhy
--  发布时间:3/3/2005 6:23:00 PM

--  
see
--  作者:lqefn
--  发布时间:4/22/2005 5:37:00 PM

--  
有意思,哈.
--  作者:binaryluo
--  发布时间:7/14/2005 9:36:00 PM

--  
用java就是方便,不出30行就搞定了。
--  作者:hityelin
--  发布时间:7/15/2005 9:07:00 AM

--  
有个问题,这个适合的是短的字符串类型
我想知道,如果是一个文件怎么办,如果将一个文件全部读入内存似乎也不是一种很好的方法!

要是分批处理是不是要有些什么特别的要求,比如读入的是512的整数倍之类
希望可以解答


--  作者:binaryluo
--  发布时间:7/21/2005 11:04:00 PM

--  
MD5输入可以是任何长度的消息,输出是固定的128位的一个字符串(摘要)。(详细的请参看RFC1321)
处理步骤:
步骤1:增加填充位。填充消息使得其长度与448模512同余。也就是说填充后的消息长度比512的某个整数倍少64位。
步骤2:填充长度。用64位表示填充前消息的长度,并将其附在步骤1所得结果之后。填充前消息长度如果大于2的64次方,则只使用其低64位,即它所包含的是填充前消息的长度对2的64次方取模的结果。
步骤3:初始化MD缓冲区。hash函数的中间结果和最终结果保存于128位的缓冲区中,缓冲区用4个32位寄存器(A,B,C,D)表示,并将这些寄存器初始化为下列32位的整数(16进制):
A=67452301
B=EFCDAB89
C=98BADCFE
D=10325476
以上初始化值以低端格式存储,也就是说,字的最低有效位存储在低地址字节位置。
步骤4:以 512 位的分组(16个字)位单位处理消息。具体是4轮运算结构相同,但各轮使用不同的基本逻辑函数。
(具体步骤略)
步骤5:输出。所有的 L 个 512 位的分组处理完后,第 L 个分组的输出即是128位的消息摘要。
--  作者:jcxuefeng
--  发布时间:9/20/2005 10:16:00 AM

--  
厉害啊!java就是N!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
648.438ms