网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.驾驭“野马”-- 探索Java&n.
.J2EE数据库设计入门.
.有关手机中文问题传输的解决办法.
.前车之覆,后车之鉴 --开源项目经.
.J2EE 应用程序开发:专业设计师的.
.Eclipse 走上榜首 照亮Java众生.
.我们组的Web应用开发方式.
.使用Ant协助开发Java项目.
.事件处理中UI的刷新问题(笔记体小.
.Sun Blade和Java工作站领跑传统工.
.X3D实战基础讲座之九.
..NET实现的农历功能及其代码分享.
.关于Java连接各种数据库的实例.
.用于Java SE的Hibernate.
..NET的“无触式”配置:一个新的.
.使用Java编写Palm OS程序的.
.java性能优化-之一.
.java设计模式之Memento(恢复对象.
.用Java自制手机联网游戏.
.构造java函数.

java版的MD5

发表日期:2008-1-5



  public class MD5
{
/*
* A Java implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Based on the javascript implementation of Paul Johnston
* Copyright (C) Paul Johnston 1999 - 2000.
* See http://pajhome.org.uk/site/legal.Html for details.
* Java Version by Thomas Weber (Orange Interactive GmbH)
*/

/*
* Convert a 32-bit number to a hex string with ls-byte first
*/
String hex_chr = "0123456789abcdef";
private String rhex(int num)
{
String str = "";
for(int j = 0; j <= 3; j++)
str = str + hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) + hex_chr.charAt((num >> (j * 8)) & 0x0F);
return str;
}

/*
* Convert a string to a sequence of 16-Word blocks, stored as an array.
* Append padding bits and the length, as described in the MD5 standard.
*/
private int[] str2blks_MD5(String str)
{
int nblk = ((str.length() + 8) >> 6) + 1;
int[] blks = new int[nblk * 16];
int i = 0;
for(i = 0; i < nblk * 16; i++) {
blks[i] = 0;
}
for(i = 0; i < str.length(); i++) {
blks[i >> 2] = str.charAt(i) << ((i % 4) * 8);
}
blks[i >> 2] = 0x80 << ((i % 4) * 8);
blks[nblk * 16 - 2] = str.length()*8;

return blks;
}

/*
* Add integers, wrapping at 2^32
*/
private int add(int x, int y)
{
return ((x&0x7FFFFFFF) + (y&0x7FFFFFFF)) ^ (x&0x80000000) ^ (y&0x80000000);
}

/*
* Bitwise rotate a 32-bit number to the left
*/
private int rol(int num, int cnt)
{
return (num << cnt) (num >>> (32 - cnt));
}

/*
* These functions implement the basic operation for each round of the
* algorithm.
*/
private int cmn(int q, int a, int b, int x, int s, int t)
{
return add(rol(add(add(a, q), add(x, t)), s), b);
}
private int ff(int a, int b, int c, int d, int x, int s, int t)
{
return cmn((b & c) ((~b) & d), a, b, x, s, t);
}
private int gg(int a, int b, int c, int d, int x, int s, int t)
{
return cmn((b & d) (c & (~d)), a, b, x, s, t);
上一篇:JavaServer Faces (JSF) vs Struts 人气:669
下一篇:java版本名称 人气:733
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐