package hospital;
/************************************************
MD5 ??﹞“??Java Bean
Last Modified:10,Mar,2001
*************************************************/
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;
}
/* md5Init????????????????????????????㊣?????℅∼??㊣那℅??????? */
private void md5Init() {
count[0] = 0L;
count[1] = 0L;
///* Load magic initialization constants.
state[0] = 0x67452301L;
state[1] = 0xefcdab89L;
state[2] = 0x98badcfeL;
state[3] = 0x10325476L;
return;
}
/* F, G, H ,I ??4???迄㊣???MD5??????????????MD5??C?????????????邦????
?辰?????????????????????∫????????∼??邦???????????那????java????????∼??邦??
????????????private﹞?﹞“????℅?㊣?????????C?????? */
private long F(long x, long y, long z) {
return (x & y) | ((~x) & z);
}
private long G(long x, long y, long z) {
return (x & z) | (y & (~z));
}
private long H(long x, long y, long z) {
return x ^ y ^ z;
}
private long I(long x, long y, long z) {
return y ^ (x | (~z));
}
/*
FF,GG,HH??II???‾??F,G,H,I?????邦????㊣???
FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation.
*/
private long FF(long a, long b, long c, long d, long x, long s,
long ac) {
a += F (b, c, d) + x + ac;
a = ((int) a << s) | ((int) a >>> (32 - s));
a += b;
return a;
}
private long GG(long a, long b, long c, long d, long x, long s,
long ac) {
a += G (b, c, d) + x + ac;
a = ((int) a << s) | ((int) a >>> (32 - s));
a += b;
return a;
}
private long HH(long a, long b, long c, long d, long x, long s,
long ac) {
a += H (b, c, d) + x + ac;
a = ((int) a << s) | ((int) a >>> (32 - s));
a += b;
return a;
}
private long II(long a, long b, long c, long d, long x, long s,
long ac) {
a += I (b, c, d) + x + ac;
a = ((int) a << s) | ((int) a >>> (32 - s));
a += b;
return a;
}
/*
md5Update??MD5???‾??????????inbuf????㊣?????℅???????inputlen???∟????????
??????getMD5ofStr?‾?????‾?????∼?豕???‾??md5init???辰??∼??邦?豕????private??
*/
private void md5Update(byte[] inbuf, int inputLen) {
int i, index, partLen;
byte[] block = new byte[64];
index = (int)(count[0] >>> 3) & 0x3F;
// /* Update number of bits */
if ((count[0] += (inputLen << 3)) < (inputLen << 3))
count[1]++;
count[1] += (inputLen >>> 29);
partLen = 64 - index;
// Transform as many times as possible.
if (inputLen >= partLen) {
md5Memcpy(buffer, inbuf, index, 0, partLen);
md5Transform(buffer);
for (i = partLen; i + 63 < inputLen; i += 64) {
md5Memcpy(block, inbuf, 0, i, 64);
md5Transform (block);
}
index = 0;
} else
i = 0;
///* Buffer remaining input */
md5Memcpy(buffer, inbuf, index, i, inputLen - i);
}
/*
md5Final???赤???????????芍??
*/
private void md5Final () {
byte[] bits = new byte[8];
int index, padLen;
///* Save number of bits */
Encode (bits, count, 8);
///* Pad out to 56 mod 64.
index = (int)(count[0] >>> 3) & 0x3f;
padLen = (index < 56) ? (56 - index) : (120 - index);
md5Update (PADDING, padLen);
///* Append length (before padding) */
md5Update(bits, 8);
///* Store state in digest */
Encode (digest, state, 16);
}
/* md5Memcpy????????????????byte??℅谷???谷??㊣?????????input??inpos????∼?len?∟????
?????????? ℅?????㊣???output??outpos????????
*/
private void md5Memcpy (byte[] output, byte[] input,
int outpos, int inpos, int len)
{
int i;
for (i = 0; i < len; i++)
output[outpos + i] = input[inpos + i];
}
/*
md5Transform??MD5????㊣??????辰????md5Update?‾????block??﹞??谷??????℅???
*/
private void md5Transform (byte block[]) {
long a = state[0], b = state[1], c = state[2], d = state[3];
long[] x = new long[16];
Decode (x, block, 64);
/* Round 1 */
a = FF (a, b, c, d, x[0], S11, 0xd76aa478L); /* 1 */
d = FF (d, a, b, c, x[1], S12, 0xe8c7b756L); /* 2 */
c = FF (c, d, a, b, x[2], S13, 0x242070dbL); /* 3 */
b = FF (b, c, d, a, x[3], S14, 0xc1bdceeeL); /* 4 */
a = FF (a, b, c, d, x[4], S11, 0xf57c0fafL); /* 5 */
d = FF (d, a, b, c, x[5], S12, 0x4787c62aL); /* 6 */
c = FF (c, d, a, b, x[6], S13, 0xa8304613L); /* 7 */
b = FF (b, c, d, a, x[7], S14, 0xfd469501L); /* 8 */
a = FF (a, b, c, d, x[8], S11, 0x698098d8L); /* 9 */
d = FF (d, a, b, c, x[9], S12, 0x8b44f7afL); /* 10 */
c = FF (c, d, a, b, x[10], S13, 0xffff5bb1L); /* 11 */
b = FF (b, c, d, a, x[11], S14, 0x895cd7beL); /* 12 */
a = FF (a, b, c, d, x[12], S11, 0x6b901122L); /* 13 */
d = FF (d, a, b, c, x[13], S12, 0xfd987193L); /* 14 */
c = FF (c, d, a, b, x[14], S13, 0xa679438eL); /* 15 */
b = FF (b, c, d, a, x[15], S14, 0x49b40821L); /* 16 */
/* Round 2 */
a = GG (a, b, c, d, x[1], S21, 0xf61e2562L); /* 17 */
d = GG (d, a, b, c, x[6], S22, 0xc040b340L); /* 18 */
c = GG (c, d, a, b, x[11], S23, 0x265e5a51L); /* 19 */
b = GG (b, c, d, a, x[0], S24, 0xe9b6c7aaL); /* 20 */
a = GG (a, b, c, d, x[5], S21, 0xd62f105dL); /* 21 */
d = GG (d, a, b, c, x[10], S22, 0x2441453L); /* 22 */
c = GG (c, d, a, b, x[15], S23, 0xd8a1e681L); /* 23 */
b = GG (b, c, d, a, x[4], S24, 0xe7d3fbc8L); /* 24 */
a = GG (a, b, c, d, x[9], S21, 0x21e1cde6L); /* 25 */
d = GG (d, a, b, c, x[14], S22, 0xc33707d6L); /* 26 */
c = GG (c, d, a, b, x[3], S23, 0xf4d50d87L); /* 27 */
b = GG (b, c, d, a, x[8], S24, 0x455a14edL); /* 28 */
a = GG (a, b, c, d, x[13], S21, 0xa9e3e905L); /* 29 */
d = GG (d, a, b, c, x[2], S22, 0xfcefa3f8L); /* 30 */
c = GG (c, d, a, b, x[7], S23, 0x676f02d9L); /* 31 */
b = GG (b, c, d, a, x[12], S24, 0x8d2a4c8aL); /* 32 */
/* Round 3 */
a = HH (a, b, c, d, x[5], S31, 0xfffa3942L); /* 33 */
d = HH (d,
没有合适的资源?快使用搜索试试~ 我知道了~
医院挂号管理系统附带源代码
共65个文件
jsp:39个
java:22个
xml:2个
5星 · 超过95%的资源 需积分: 31 1.1k 下载量 93 浏览量
2008-12-14
10:01:08
上传
评论 23
收藏 98KB RAR 举报
温馨提示
医院管理系统 可用于挂号 收费等功能 可以查询 修改 插入 信息
资源推荐
资源详情
资源评论
收起资源包目录
.rar (65个子文件)
医院管理系统
New Project 20060625 1603.sql 21KB
web.xml 8KB
src
hospital
Drugchange.java 2KB
Patient.java 3KB
Userdel.java 2KB
Newsdel.java 2KB
Loginok.java 182B
Noticechange.java 2KB
Newschange.java 2KB
Drugdel.java 2KB
Dbconn.java 6KB
md5.java 11KB
Register.java 3KB
Doc_drug.java 3KB
User.java 3KB
Drugadd.java 3KB
News.java 3KB
Charge_reg.java 3KB
Drugquery.java 3KB
Doc_reg.java 3KB
Notice.java 3KB
Charge.java 3KB
Login.java 3KB
Noticedel.java 2KB
hospital
ins
loginok_reg.jsp 2KB
drug_change.jsp 2KB
loginok_drug.jsp 542B
reg_ok.jsp 605B
patient_ok.jsp 612B
drug_query.jsp 1KB
reg_error.jsp 607B
charge_error.jsp 619B
charge_ok.jsp 2KB
drugadd_ok.jsp 607B
doc_drug.jsp 467B
register.jsp 1KB
index_login.jsp 558B
ins_1.jsp 397B
charge_complete.jsp 601B
drugadd_error.jsp 607B
patient_error.jsp 613B
drug_add.jsp 2KB
drug_queryerror.jsp 440B
loginok_doc.jsp 626B
doc_regerror.jsp 613B
drug_queryok.jsp 2KB
loginok_charge.jsp 648B
login_loginok.jsp 333B
doc_reg.jsp 1KB
room_regnum.jsp 1KB
loginok.jsp 2KB
index.jsp 2KB
admin.jsp 720B
web.xml 8KB
pic
pic.jpg 57KB
news_view.jsp 897B
admin
notice.jsp 2KB
index_admin.jsp 577B
user_change.jsp 254B
news.jsp 2KB
news_change.jsp 1KB
notice_change.jsp 1KB
user.jsp 4KB
drug_num.jsp 1KB
loginerror.jsp 2KB
共 65 条
- 1
huangshuo327
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页