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,
没有合适的资源?快使用搜索试试~ 我知道了~
hospjava.rar_hospital_java 医院门诊_医院_挂号_门诊
共66个文件
jsp:39个
java:22个
xml:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 131 浏览量
2022-09-21
03:39:58
上传
评论
收藏 98KB RAR 举报
温馨提示
java医院应用包含门诊挂号收费住院等应用比较好用
资源推荐
资源详情
资源评论
收起资源包目录
hospjava.rar (66个子文件)
医院管理系统
web.xml 8KB
New Project 20060625 1603.sql 21KB
src
hospital
User.java 3KB
Noticechange.java 2KB
Patient.java 3KB
Login.java 3KB
Drugadd.java 3KB
Doc_reg.java 3KB
Register.java 3KB
Drugdel.java 2KB
Charge_reg.java 3KB
Drugquery.java 3KB
md5.java 11KB
Userdel.java 2KB
News.java 3KB
Charge.java 3KB
Loginok.java 182B
Noticedel.java 2KB
Doc_drug.java 3KB
Notice.java 3KB
Newschange.java 2KB
Newsdel.java 2KB
Drugchange.java 2KB
Dbconn.java 6KB
hospital
loginok.jsp 2KB
news_view.jsp 897B
admin
notice.jsp 2KB
user_change.jsp 254B
news_change.jsp 1KB
notice_change.jsp 1KB
index_admin.jsp 577B
news.jsp 2KB
user.jsp 4KB
pic
pic.jpg 57KB
web.xml 8KB
loginerror.jsp 2KB
admin.jsp 720B
index.jsp 2KB
ins
loginok_drug.jsp 542B
loginok_reg.jsp 2KB
doc_reg.jsp 1KB
drug_change.jsp 2KB
index_login.jsp 558B
drug_query.jsp 1KB
drugadd_error.jsp 607B
charge_error.jsp 619B
drug_queryok.jsp 2KB
drug_add.jsp 2KB
drug_queryerror.jsp 440B
login_loginok.jsp 333B
doc_regerror.jsp 613B
patient_ok.jsp 612B
ins_1.jsp 397B
charge_complete.jsp 601B
drugadd_ok.jsp 607B
doc_drug.jsp 467B
patient_error.jsp 613B
register.jsp 1KB
charge_ok.jsp 2KB
loginok_charge.jsp 648B
reg_error.jsp 607B
reg_ok.jsp 605B
loginok_doc.jsp 626B
room_regnum.jsp 1KB
drug_num.jsp 1KB
www.pudn.com.txt 218B
共 66 条
- 1
资源评论
小波思基
- 粉丝: 72
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 驱动代码驱动代码驱动代码驱动代码
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- MicroMsg.xlsx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功