锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
聽
import java.lang.reflect.*;
import java.io.*;
/*************************************************
md5 綾誨疄鐜頒簡(jiǎn)RSA Data Security, Inc.鍦ㄦ彁浜ょ粰IETF
鐨凴FC1321涓殑MD5 message-digest 綆楁硶銆?br />*************************************************/
聽
publicclass MD5 {
/* 涓嬮潰榪欎簺S11-S44瀹為檯涓婃槸涓涓?*4鐨勭煩闃碉紝鍦ㄥ師濮嬬殑C瀹炵幇涓槸鐢?define 瀹炵幇鐨勶紝
榪欓噷鎶婂畠浠疄鐜版垚涓簊tatic final鏄〃紺轟簡(jiǎn)鍙錛屽垏鑳藉湪鍚屼竴涓繘紼嬬┖闂村唴鐨勫涓?br /> Instance闂村叡浜?/
staticfinalint S11 = 7;
staticfinalint S12 = 12;
staticfinalint S13 = 17;
staticfinalint S14 = 22;
聽
staticfinalint S21 = 5;
staticfinalint S22 = 9;
staticfinalint S23 = 14;
staticfinalint S24 = 20;
聽
staticfinalint S31 = 4;
staticfinalint S32 = 11;
staticfinalint S33 = 16;
staticfinalint S34 = 23;
聽
staticfinalint S41 = 6;
staticfinalint S42 = 10;
staticfinalint S43 = 15;
staticfinalint S44 = 21;
聽
staticfinalbyte[] 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涓牳蹇?jī)鏁版嵁锛屽湪鍘熷鐨凜瀹炵幇涓?br /> 琚畾涔夊埌MD5_CTX緇撴瀯涓?br />
*/
privatelong[] state = newlong[4]; // state (ABCD)
privatelong[] count = newlong[2]; // number of bits, modulo 2^64 (lsb first)
privatebyte[] buffer = newbyte[64]; // input buffer
聽
/* digestHexStr鏄疢D5鐨勫敮涓涓涓叕鍏辨垚鍛橈紝鏄渶鏂頒竴嬈¤綆楃粨鏋滅殑
銆 16榪涘埗ASCII琛ㄧず.
*/
public String digestHexStr;
聽
/* digest,鏄渶鏂頒竴嬈¤綆楃粨鏋滅殑2榪涘埗鍐呴儴琛ㄧず錛岃〃紺?28bit鐨凪D5鍊?
*/
privatebyte[] digest = newbyte[16];
聽
/*
getMD5ofStr鏄被MD5鏈涓昏鐨勫叕鍏辨柟娉曪紝鍏ュ彛鍙傛暟鏄綘鎯寵榪涜MD5鍙樻崲鐨勫瓧絎︿覆
榪斿洖鐨勬槸鍙樻崲瀹岀殑緇撴灉錛岃繖涓粨鏋滄槸浠庡叕鍏辨垚鍛榙igestHexStr鍙栧緱鐨勶紟
*/
public String getMD5ofStr(String inbuf) {
md5Init();
try{
md5Update(inbuf.getBytes("GBK"),
inbuf.getBytes("GBK").length);
}
catch (UnsupportedEncodingException ex) {
}
md5Final();
digestHexStr = "";
for (int i = 0; i < 16; i++) {
digestHexStr += byteHEX(digest[i]);
}
return digestHexStr;
聽
}
// 榪欐槸MD5榪欎釜綾葷殑鏍囧噯鏋勯犲嚱鏁幫紝JavaBean瑕佹眰鏈変竴涓猵ublic鐨勫茍涓旀病鏈夊弬鏁扮殑鏋勯犲嚱鏁?/font>
public MD5() {
md5Init();
聽
return;
}
聽
聽
聽
/* md5Init鏄竴涓垵濮嬪寲鍑芥暟錛屽垵濮嬪寲鏍稿績(jī)鍙橀噺錛岃鍏ユ爣鍑嗙殑騫繪暟 */
privatevoid 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 鏄?涓熀鏈殑MD5鍑芥暟錛屽湪鍘熷鐨凪D5鐨凜瀹炵幇涓紝鐢變簬瀹冧滑鏄?br /> 綆鍗曠殑浣嶈繍綆楋紝鍙兘鍑轟簬鏁堢巼鐨勮冭檻鎶婂畠浠疄鐜版垚浜?jiǎn)瀹忓Q屽湪java涓紝鎴戜滑鎶婂畠浠?br /> 銆銆瀹炵幇鎴愪簡(jiǎn)private鏂規(guī)硶錛屽悕瀛椾繚鎸佷簡(jiǎn)鍘熸潵C涓殑銆?*/
聽
privatelong F(long x, long y, long z) {
return (x & y) | ((~x) & z);
聽
}
privatelong G(long x, long y, long z) {
return (x & z) | (y & (~z));
聽
}
privatelong H(long x, long y, long z) {
return x ^ y ^ z;
}
聽
privatelong I(long x, long y, long z) {
return y ^ (x | (~z));
}
聽
/*
FF,GG,HH鍜孖I灝嗚皟鐢‵,G,H,I榪涜榪戜竴姝ュ彉鎹?br /> FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation.
*/
聽
privatelong 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;
}
聽
privatelong 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;
}
privatelong 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;
}
privatelong 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鏄疢D5鐨勪富璁$畻榪囩▼錛宨nbuf鏄鍙樻崲鐨勫瓧鑺備覆錛宨nputlen鏄暱搴︼紝榪欎釜
鍑芥暟鐢眊etMD5ofStr璋冪敤錛岃皟鐢ㄤ箣鍓嶉渶瑕佽皟鐢╩d5init錛屽洜姝ゆ妸瀹冭璁℃垚private鐨?br /> */
privatevoid md5Update(byte[] inbuf, int inputLen) {
聽
int i, index, partLen;
byte[] block = newbyte[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鏁寸悊鍜屽~鍐欒緭鍑虹粨鏋?br /> */
privatevoid md5Final () {
byte[] bits = newbyte[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鐨刬npos寮濮嬫妸len闀垮害鐨?br />銆銆銆銆銆 瀛楄妭鎷瘋礉鍒皁utput鐨刼utpos浣嶇疆寮濮?br /> */
聽
privatevoid 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鏄疢D5鏍稿績(jī)鍙樻崲紼嬪簭錛屾湁md5Update璋冪敤錛宐lock鏄垎鍧楃殑鍘熷瀛楄妭
*/
privatevoid md5Transform (byte block[]) {
long a = state[0], b = state[1], c = state[2], d = state[3];
long[] x = newlong[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, a, b, c, x[8], S32, 0x8771f681L); /* 34 */
c = HH (c, d, a, b, x[11], S33, 0x6d9d6122L); /* 35 */
b = HH (b, c, d, a, x[14], S34, 0xfde5380cL); /* 36 */
a = HH (a, b, c, d, x[1], S31, 0xa4beea44L); /* 37 */
d = HH (d, a, b, c, x[4], S32, 0x4bdecfa9L); /* 38 */
c = HH (c, d, a, b, x[7], S33, 0xf6bb4b60L); /* 39 */
b = HH (b, c, d, a, x[10], S34, 0xbebfbc70L); /* 40 */
a = HH (a, b, c, d, x[13], S31, 0x289b7ec6L); /* 41 */
d = HH (d, a, b, c, x[0], S32, 0xeaa127faL); /* 42 */
c = HH (c, d, a, b, x[3], S33, 0xd4ef3085L); /* 43 */
b = HH (b, c, d, a, x[6], S34, 0x4881d05L); /* 44 */
a = HH (a, b, c, d, x[9], S31, 0xd9d4d039L); /* 45 */
d = HH (d, a, b, c, x[12], S32, 0xe6db99e5L); /* 46 */
c = HH (c, d, a, b, x[15], S33, 0x1fa27cf8L); /* 47 */
b = HH (b, c, d, a, x[2], S34, 0xc4ac5665L); /* 48 */
聽
/* Round 4 */
a = II (a, b, c, d, x[0], S41, 0xf4292244L); /* 49 */
d = II (d, a, b, c, x[7], S42, 0x432aff97L); /* 50 */
c = II (c, d, a, b, x[14], S43, 0xab9423a7L); /* 51 */
b = II (b, c, d, a, x[5], S44, 0xfc93a039L); /* 52 */
a = II (a, b, c, d, x[12], S41, 0x655b59c3L); /* 53 */
d = II (d, a, b, c, x[3], S42, 0x8f0ccc92L); /* 54 */
c = II (c, d, a, b, x[10], S43, 0xffeff47dL); /* 55 */
b = II (b, c, d, a, x[1], S44, 0x85845dd1L); /* 56 */
a = II (a, b, c, d, x[8], S41, 0x6fa87e4fL); /* 57 */
d = II (d, a, b, c, x[15], S42, 0xfe2ce6e0L); /* 58 */
c = II (c, d, a, b, x[6], S43, 0xa3014314L); /* 59 */
b = II (b, c, d, a, x[13], S44, 0x4e0811a1L); /* 60 */
a = II (a, b, c, d, x[4], S41, 0xf7537e82L); /* 61 */
d = II (d, a, b, c, x[11], S42, 0xbd3af235L); /* 62 */
c = II (c, d, a, b, x[2], S43, 0x2ad7d2bbL); /* 63 */
b = II (b, c, d, a, x[9], S44, 0xeb86d391L); /* 64 */
聽
state[0] += a;
state[1] += b;
state[2] += c;
state[3] += d;
聽
}
聽
/*Encode鎶妉ong鏁扮粍鎸夐『搴忔媶鎴恇yte鏁扮粍錛屽洜涓簀ava鐨刲ong綾誨瀷鏄?4bit鐨勶紝
鍙媶浣?2bit錛屼互閫傚簲鍘熷C瀹炵幇鐨勭敤閫?br /> */
privatevoid Encode (byte[] output, long[] input, int len) {
int i, j;
聽
for (i = 0, j = 0; j < len; i++, j += 4) {
output[j] = (byte)(input[i] & 0xffL);
output[j + 1] = (byte)((input[i] >>> 8) & 0xffL);
output[j + 2] = (byte)((input[i] >>> 16) & 0xffL);
output[j + 3] = (byte)((input[i] >>> 24) & 0xffL);
}
}
聽
/*Decode鎶奲yte鏁扮粍鎸夐『搴忓悎鎴愭垚long鏁扮粍錛屽洜涓簀ava鐨刲ong綾誨瀷鏄?4bit鐨勶紝
鍙悎鎴愪綆32bit錛岄珮32bit娓呴浂錛屼互閫傚簲鍘熷C瀹炵幇鐨勭敤閫?br /> */
privatevoid Decode (long[] output, byte[] input, int len) {
int i, j;
聽
聽
for (i = 0, j = 0; j < len; i++, j += 4)
output[i] = b2iu(input[j]) |
(b2iu(input[j + 1]) << 8) |
(b2iu(input[j + 2]) << 16) |
(b2iu(input[j + 3]) << 24);
聽
return;
}
聽
/*
b2iu鏄垜鍐欑殑涓涓妸byte鎸夌収涓嶈冭檻姝h礋鍙風(fēng)殑鍘熷垯鐨勶紓鍗囦綅錛傜▼搴忥紝鍥犱負(fù)java娌℃湁unsigned榪愮畻
*/
publicstaticlong b2iu(byte b) {
return b < 0 ? b & 0x7F + 128 : b;
}
聽
/*byteHEX()錛岀敤鏉ユ妸涓涓猙yte綾誨瀷鐨勬暟杞崲鎴愬崄鍏繘鍒剁殑ASCII琛ㄧず錛?br /> 銆鍥犱負(fù)java涓殑byte鐨則oString鏃犳硶瀹炵幇榪欎竴鐐癸紝鎴戜滑鍙堟病鏈塁璇█涓殑
sprintf(outbuf,"%02X",ib)
*/
publicstatic String byteHEX(byte ib) {
char[] Digit = {'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F'};
char [] ob = newchar[2];
ob[0] = Digit[(ib >>> 4) & 0X0F];
ob[1] = Digit[ib & 0X0F];
String s = new String(ob);
return s;
}
聽
publicstaticvoid main(String args[]) {
聽
聽
MD5 m = new MD5();
if (Array.getLength(args) == 0) {//濡傛灉娌℃湁鍙傛暟錛屾墽琛屾爣鍑嗙殑Test Suite
聽
System.out.println("MD5 Test suite:");
System.out.println("MD5(\"\"):"+m.getMD5ofStr(""));
System.out.println("MD5(\"a\"):"+m.getMD5ofStr("a"));
System.out.println("MD5(\"abc\"):"+m.getMD5ofStr("abc"));
System.out.println("MD5(\"message digest\"):"+m.getMD5ofStr("message digest"));
System.out.println("MD5(\"abcdefghijklmnopqrstuvwxyz\"):"+
m.getMD5ofStr("abcdefghijklmnopqrstuvwxyz"));
System.out.println("MD5(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"):"+
m.getMD5ofStr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"));
}
else
System.out.println("MD5(" + args[0] + ")=" + m.getMD5ofStr(args[0]));
聽
聽
}
聽
}
//...
聽
System.out.println("\n+---------------------[ Network Cards ]----------------------+\n");
try
{
for(Enumeration list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();)
{
NetworkInterface iFace = (NetworkInterface)list.nextElement();
System.out.println("Card:" + iFace.getDisplayName());
InetAddress adr;
for(Enumeration addresses = iFace.getInetAddresses(); addresses.hasMoreElements(); System.out.println(" -> " + adr.getHostAddress()))
adr = (InetAddress)addresses.nextElement();
聽
}
聽
}
catch(SocketException se)
{
System.out.println("Failed discovering network cards!");
System.out.println("Error: " + se);
}
聽
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
聽
publicclass DateTimeUtil
{
聽
privatestaticfinalint MAJOR_VERSION = 1;
privatestaticfinalint MINOR_VERSION = 0;
privatestaticfinalint REVISION_VERSION = 1;
privatestaticfinal String showFormat = "yyyy-MM-dd HH:mm:ss";
privatestaticfinal String storeFormat = "yyyyMMddHHmmssSSS";
privatestaticfinal SimpleDateFormat showFormater = new SimpleDateFormat(showFormat);
privatestaticfinal SimpleDateFormat storeFormater = new SimpleDateFormat(storeFormat);
privatestaticfinal SimpleDateFormat formatter1 = new SimpleDateFormat ("yyyy騫碝M鏈坉d鏃?HH鏃秏m鍒唖s縐?);
privatestaticfinal SimpleDateFormat formatter2 = new SimpleDateFormat ("yyyy騫碝M鏈坉d鏃?);
privatestaticfinal SimpleDateFormat formatter3 = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
privatestaticfinal SimpleDateFormat formatter4 = new SimpleDateFormat ("yyyy-MM-dd");
privatestaticfinal SimpleDateFormat formatter5 = new SimpleDateFormat ("yyyy/MM/dd");
privatestaticfinal SimpleDateFormat formatter6 = new SimpleDateFormat ("MM-dd HH:mm");
聽
public DateTimeUtil()
{
}
聽
publicstatic String getNow()
{
return storeFormater.format(new Date());
}
聽
publicstatic String getRelativeDate(int days)
{
Calendar c = Calendar.getInstance();
c.set(5, c.get(5) + days);
StringBuffer sb = new StringBuffer(17);
sb.append(c.get(1));
int tmp[] = {
c.get(2) + 1, c.get(5), c.get(11), c.get(12), c.get(13), c.get(14)
};
for(int i = 0; i < tmp.length - 1; i++)
sb.append(tmp[i] >= 10 ? "" : "0").append(tmp[i]);
聽
if(tmp[tmp.length - 1] < 10)
sb.append("0");
if(tmp[tmp.length - 1] < 100)
sb.append("0");
sb.append(tmp[tmp.length - 1]);
return sb.toString();
}
聽
publicstatic String getNow(String string)
{
return (new SimpleDateFormat(string)).format(new Date());
}
聽
publicstatic String getDisplayTime(long time)
{
return showFormater.format(new Date(time));
}
聽
publicstatic String getDisplayTime(long time, String string)
{
return (new SimpleDateFormat(string)).format(new Date(time));
}
聽
publicstatic String getShowFormat(String time)
{
try
{
if(time == null || time.equals(""))
time = showFormater.format(new Date());
else
time = showFormater.format(storeFormater.parse(time));
}
catch(ParseException e)
{
e.printStackTrace();
}
return time;
}
聽
publicstaticlong compare(String t1, String t2)
{
return Long.valueOf(t1).longValue() - Long.valueOf(t2).longValue();
}
聽
publicstaticint getYear(String time)
{
return Integer.valueOf(time.substring(0, 4)).intValue();
}
聽
publicstaticint getMonth(String time)
{
return Integer.valueOf(time.substring(4, 6)).intValue();
}
聽
publicstaticint getDate(String time)
{
return Integer.valueOf(time.substring(6, 8)).intValue();
}
聽
publicstaticint getHour(String time)
{
return Integer.valueOf(time.substring(8, 10)).intValue();
}
聽
publicstaticint getMinute(String time)
{
return Integer.valueOf(time.substring(10, 12)).intValue();
}
聽
publicstaticint getSecond(String time)
{
return Integer.valueOf(time.substring(12, 14)).intValue();
}
聽
publicstaticint getMilliSencond(String time)
{
return Integer.valueOf(time.substring(14, 17)).intValue();
}
聽
publicstaticlong getTimeStamp(String time)
throws ParseException
{
return storeFormater.parse(time).getTime();
}
聽
publicstatic String formatDate1(Date myDate) {
return formatter1.format(myDate);
}
聽
publicstatic String formatDate2(Date myDate) {
return formatter2.format(myDate);
}
聽
publicstatic String formatDate3(Date myDate) {
return formatter3.format(myDate);
}
聽
publicstatic String formatDate4(Date myDate) {
return formatter4.format(myDate);
}
聽
publicstatic String formatDate5(Date myDate) {
return formatter5.format(myDate);
}
聽
publicstatic String formatDate6(Date myDate) {
return formatter6.format(myDate);
}
聽
publicstaticlong getLongTime(String time){
try{
return showFormater.parse(time).getTime();
}
catch (ParseException ex) {
return 0L;
}
}
聽
聽
publicstatic String getVersion()
{
return"1.0.1";
}
聽
publicstaticint getMajor()
{
return 1;
}
聽
publicstaticint getMinor()
{
return 0;
}
聽
publicstaticint getRevision()
{
return 1;
}
聽
}
聽
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
聽
publicclass ParamUtils
{
聽
public ParamUtils()
{
}
聽
publicstatic String getParameter(HttpServletRequest request, String name)
{
return getParameter(request, name, false);
}
聽
publicstatic String getParameter(HttpServletRequest request, String name, String defaultValue)
{
return getParameter(request, name, defaultValue, false);
}
聽
publicstatic String getParameter(HttpServletRequest request, String name, boolean emptyStringsOK)
{
return getParameter(request, name, null, emptyStringsOK);
}
聽
publicstatic String getParameter(HttpServletRequest request, String name, String defaultValue, boolean emptyStringsOK)
{
String temp = request.getParameter(name);
if(temp != null)
{
if(temp.equals("") && !emptyStringsOK)
return defaultValue;
else
return temp;
}else
{
return defaultValue;
}
}
聽
publicstatic String[] getParameters(HttpServletRequest request, String name)
{
if(name == null)
returnnew String[0];
String paramValues[] = request.getParameterValues(name);
if(paramValues == null || paramValues.length == 0)
returnnew String[0];
List values = new ArrayList(paramValues.length);
for(int i = 0; i < paramValues.length; i++)
if(paramValues[i] != null && !"".equals(paramValues[i]))
values.add(paramValues[i]);
聽
return (String[])values.toArray(new String[0]);
}
聽
publicstaticboolean getBooleanParameter(HttpServletRequest request, String name)
{
return getBooleanParameter(request, name, false);
}
聽
publicstaticboolean getBooleanParameter(HttpServletRequest request, String name, boolean defaultVal)
{
String temp = request.getParameter(name);
if("true".equals(temp) || "on".equals(temp))
returntrue;
if("false".equals(temp) || "off".equals(temp))
returnfalse;
else
return defaultVal;
}
聽
publicstaticint getIntParameter(HttpServletRequest request, String name, int defaultNum)
{
String temp = request.getParameter(name);
if(temp != null && !temp.equals(""))
{
int num = defaultNum;
try
{
num = Integer.parseInt(temp.trim());
}
catch(Exception ignored) {}
return num;
}else
{
return defaultNum;
}
}
聽
publicstaticint[] getIntParameters(HttpServletRequest request, String name, int defaultNum)
{
String paramValues[] = request.getParameterValues(name);
if(paramValues == null || paramValues.length == 0)
returnnewint[0];
int values[] = newint[paramValues.length];
for(int i = 0; i < paramValues.length; i++)
try
{
values[i] = Integer.parseInt(paramValues[i].trim());
}
catch(Exception e)
{
values[i] = defaultNum;
}
聽
return values;
}
聽
publicstaticdouble getDoubleParameter(HttpServletRequest request, String name, double defaultNum)
{
String temp = request.getParameter(name);
if(temp != null && !temp.equals(""))
{
double num = defaultNum;
try
{
num = Double.parseDouble(temp.trim());
}
catch(Exception ignored) {}
return num;
}else
{
return defaultNum;
}
}
聽
publicstaticlong getLongParameter(HttpServletRequest request, String name, long defaultNum)
{
String temp = request.getParameter(name);
if(temp != null && !temp.equals(""))
{
long num = defaultNum;
try
{
num = Long.parseLong(temp.trim());
}
catch(Exception ignored) {}
return num;
}else
{
return defaultNum;
}
}
聽
publicstaticlong[] getLongParameters(HttpServletRequest request, String name, long defaultNum)
{
String paramValues[] = request.getParameterValues(name);
if(paramValues == null || paramValues.length == 0)
returnnewlong[0];
long values[] = newlong[paramValues.length];
for(int i = 0; i < paramValues.length; i++)
try
{
values[i] = Long.parseLong(paramValues[i].trim());
}
catch(Exception e)
{
values[i] = defaultNum;
}
聽
return values;
}
聽
publicstatic String getAttribute(HttpServletRequest request, String name)
{
return getAttribute(request, name, false);
}
聽
publicstatic String getAttribute(HttpServletRequest request, String name, boolean emptyStringsOK)
{
String temp = (String)request.getAttribute(name);
if(temp != null)
{
if(temp.equals("") && !emptyStringsOK)
returnnull;
else
return temp;
}else
{
returnnull;
}
}
聽
publicstaticboolean getBooleanAttribute(HttpServletRequest request, String name)
{
String temp = (String)request.getAttribute(name);
return temp != null && temp.equals("true");
}
聽
publicstaticint getIntAttribute(HttpServletRequest request, String name, int defaultNum)
{
String temp = (String)request.getAttribute(name);
if(temp != null && !temp.equals(""))
{
int num = defaultNum;
try
{
num = Integer.parseInt(temp.trim());
}
catch(Exception ignored) {}
return num;
}else
{
return defaultNum;
}
}
聽
publicstaticlong getLongAttribute(HttpServletRequest request, String name, long defaultNum)
{
String temp = (String)request.getAttribute(name);
if(temp != null && !temp.equals(""))
{
long num = defaultNum;
try
{
num = Long.parseLong(temp.trim());
}
catch(Exception ignored) {}
return num;
}else
{
return defaultNum;
}
}
}
聽
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.BreakIterator;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.File;
聽
public class StringUtils
{
聽 private final static String BR_TAG = "<BR>";
聽
聽聽聽 private StringUtils()
聽聽聽 {
聽聽聽 }
聽
聽聽聽 /**
聽聽聽聽 * This method takes a string which may contain newline characters
聽聽聽聽 * '\n' which it converts to html newline tags.
聽聽聽聽 *
聽聽聽聽 * @param input The text to be converted.
聽聽聽聽 * @return The input string with the newline character '\n' replaced
聽聽聽聽 * with <br>.
聽聽聽聽 */
聽聽聽 public static final String convertNewlines(String input) {
聽聽聽聽聽 return replace(replace(input, "\r\n", BR_TAG), "\n", BR_TAG);
聽聽聽 }
聽
聽聽聽 public static final String backConvertNewlines(String input) {
聽聽聽聽聽 return replaceIgnoreCase(input, BR_TAG, "\n");
聽聽聽 }
聽
聽
聽聽聽 public static final String replace(String string, String oldString, String newString)
聽聽聽 {
聽聽聽聽聽聽聽 if(string == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 if(newString == null)
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 if((i = string.indexOf(oldString, i)) >= 0)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 char string2[] = string.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 char newString2[] = newString.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 int oLength = oldString.length();
聽聽聽聽聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(string2.length);
聽聽聽聽聽聽聽聽聽聽聽 buf.append(string2, 0, i).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 int j;
聽聽聽聽聽聽聽聽聽聽聽 for(j = i; (i = string.indexOf(oldString, i)) > 0; j = i)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append(string2, j, i - j).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽聽聽聽聽 buf.append(string2, j, string2.length - j);
聽聽聽聽聽聽聽聽聽聽聽 return buf.toString();
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final String replaceIgnoreCase(String line, String oldString, String newString)
聽聽聽 {
聽聽聽聽聽聽聽 if(line == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 String lcLine = line.toLowerCase();
聽聽聽聽聽聽聽 String lcOldString = oldString.toLowerCase();
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 if((i = lcLine.indexOf(lcOldString, i)) >= 0)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 char line2[] = line.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 char newString2[] = newString.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 int oLength = oldString.length();
聽聽聽聽聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(line2.length);
聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, 0, i).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 int j;
聽聽聽聽聽聽聽聽聽聽聽 for(j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, j, i - j).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, j, line2.length - j);
聽聽聽聽聽聽聽聽聽聽聽 return buf.toString();
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return line;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final String replaceIgnoreCase(String line, String oldString, String newString, int count[])
聽聽聽 {
聽聽聽聽聽聽聽 if(line == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 String lcLine = line.toLowerCase();
聽聽聽聽聽聽聽 String lcOldString = oldString.toLowerCase();
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 if((i = lcLine.indexOf(lcOldString, i)) >= 0)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 int counter = 1;
聽聽聽聽聽聽聽聽聽聽聽 char line2[] = line.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 char newString2[] = newString.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 int oLength = oldString.length();
聽聽聽聽聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(line2.length);
聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, 0, i).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 int j;
聽聽聽聽聽聽聽聽聽聽聽 for(j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 counter++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, j, i - j).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, j, line2.length - j);
聽聽聽聽聽聽聽聽聽聽聽 count[0] = counter;
聽聽聽聽聽聽聽聽聽聽聽 return buf.toString();
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return line;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final String replace(String line, String oldString, String newString, int count[])
聽聽聽 {
聽聽聽聽聽聽聽 if(line == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 if((i = line.indexOf(oldString, i)) >= 0)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 int counter = 1;
聽聽聽聽聽聽聽聽聽聽聽 char line2[] = line.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 char newString2[] = newString.toCharArray();
聽聽聽聽聽聽聽聽聽聽聽 int oLength = oldString.length();
聽聽聽聽聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(line2.length);
聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, 0, i).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 int j;
聽聽聽聽聽聽聽聽聽聽聽 for(j = i; (i = line.indexOf(oldString, i)) > 0; j = i)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 counter++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, j, i - j).append(newString2);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 i += oLength;
聽聽聽聽聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽聽聽聽聽 buf.append(line2, j, line2.length - j);
聽聽聽聽聽聽聽聽聽聽聽 count[0] = counter;
聽聽聽聽聽聽聽聽聽聽聽 return buf.toString();
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return line;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final boolean hasBadwordsIgnoreCase(String line, String oldString)
聽聽聽 {
聽聽聽聽聽聽聽 if(line == null)
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 String lcLine = line.toLowerCase();
聽聽聽聽聽聽聽 String lcOldString = oldString.toLowerCase();
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 if((i = lcLine.indexOf(lcOldString, i)) >= 0)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final String stripTags(String in)
聽聽聽 {
聽聽聽聽聽聽聽 if(in == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽 return stripTags(in, false);
聽聽聽 }
聽
聽聽聽 public static final String stripTags(String in, boolean stripBRTag)
聽聽聽 {
聽聽聽聽聽聽聽 if(in == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 int last = 0;
聽聽聽聽聽聽聽 char input[] = in.toCharArray();
聽聽聽聽聽聽聽 int len = input.length;
聽聽聽聽聽聽聽 StringBuffer out = new StringBuffer((int)((double)len * 1.3D));
聽聽聽聽聽聽聽 for(; i < len; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 char ch = input[i];
聽聽聽聽聽聽聽聽聽聽聽 if(ch > '>')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '<')
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(!stripBRTag && i + 3 < len && input[i + 1] == 'b' && input[i + 2] == 'r' && input[i + 3] == '>')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 i += 3;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(last > 0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(" ");
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '>')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 if(last == 0)
聽聽聽聽聽聽聽聽聽聽聽 return in;
聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽 return out.toString();
聽聽聽 }
聽
聽聽聽 public static final String escapeHTMLTags(String in)
聽聽聽 {
聽聽聽聽聽聽聽 if(in == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 int last = 0;
聽聽聽聽聽聽聽 char input[] = in.toCharArray();
聽聽聽聽聽聽聽 int len = input.length;
聽聽聽聽聽聽聽 StringBuffer out = new StringBuffer((int)((double)len * 1.3D));
聽聽聽聽聽聽聽 for(; i < len; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 char ch = input[i];
聽聽聽聽聽聽聽聽聽聽聽 if(ch > '>')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '<')
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(LT_ENCODE);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '>')
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(GT_ENCODE);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 if(ch != '"')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽 out.append(QUOTE_ENCODE);
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 if(last == 0)
聽聽聽聽聽聽聽聽聽聽聽 return in;
聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽 return out.toString();
聽聽聽 }
聽
聽聽聽 public static final synchronized String hash(String data)
聽聽聽 {
聽聽聽聽聽聽聽 if(digest == null)
聽聽聽聽聽聽聽聽聽聽聽 try
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 digest = MessageDigest.getInstance("MD5");
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 catch(NoSuchAlgorithmException nsae)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //Log.error(e);
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 try
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 digest.update(data.getBytes("utf-8"));
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch(UnsupportedEncodingException e)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 //Log.error(e);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return encodeHex(digest.digest());
聽聽聽 }
聽
聽聽聽 public static final String encodeHex(byte bytes[])
聽聽聽 {
聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(bytes.length * 2);
聽聽聽聽聽聽聽 for(int i = 0; i < bytes.length; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 if((bytes[i] & 0xff) < 16)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append("0");
聽聽聽聽聽聽聽聽聽聽聽 buf.append(Long.toString(bytes[i] & 0xff, 16));
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 return buf.toString();
聽聽聽 }
聽
聽聽聽 public static final byte[] decodeHex(String hex)
聽聽聽 {
聽聽聽聽聽聽聽 char chars[] = hex.toCharArray();
聽聽聽聽聽聽聽 byte bytes[] = new byte[chars.length / 2];
聽聽聽聽聽聽聽 int byteCount = 0;
聽聽聽聽聽聽聽 for(int i = 0; i < chars.length; i += 2)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 int newByte = 0;
聽聽聽聽聽聽聽聽聽聽聽 newByte |= hexCharToByte(chars[i]);
聽聽聽聽聽聽聽聽聽聽聽 newByte <<= 4;
聽聽聽聽聽聽聽聽聽聽聽 newByte |= hexCharToByte(chars[i + 1]);
聽聽聽聽聽聽聽聽聽聽聽 bytes[byteCount] = (byte)newByte;
聽聽聽聽聽聽聽聽聽聽聽 byteCount++;
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 return bytes;
聽聽聽 }
聽
聽聽聽 private static final byte hexCharToByte(char ch)
聽聽聽 {
聽聽聽聽聽聽聽 switch(ch)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽 case 48: // '0'
聽聽聽聽聽聽聽聽聽聽聽 return 0;
聽
聽聽聽聽聽聽聽 case 49: // '1'
聽聽聽聽聽聽聽聽聽聽聽 return 1;
聽
聽聽聽聽聽聽聽 case 50: // '2'
聽聽聽聽聽聽聽聽聽聽聽 return 2;
聽
聽聽聽聽聽聽聽 case 51: // '3'
聽聽聽聽聽聽聽聽聽聽聽 return 3;
聽
聽聽聽聽聽聽聽 case 52: // '4'
聽聽聽聽聽聽聽聽聽聽聽 return 4;
聽
聽聽聽聽聽聽聽 case 53: // '5'
聽聽聽聽聽聽聽聽聽聽聽 return 5;
聽
聽聽聽聽聽聽聽 case 54: // '6'
聽聽聽聽聽聽聽聽聽聽聽 return 6;
聽
聽聽聽聽聽聽聽 case 55: // '7'
聽聽聽聽聽聽聽聽聽聽聽 return 7;
聽
聽聽聽聽聽聽聽 case 56: // '8'
聽聽聽聽聽聽聽聽聽聽聽 return 8;
聽
聽聽聽聽聽聽聽 case 57: // '9'
聽聽聽聽聽聽聽聽聽聽聽 return 9;
聽
聽聽聽聽聽聽聽 case 97: // 'a'
聽聽聽聽聽聽聽聽聽聽聽 return 10;
聽
聽聽聽聽聽聽聽 case 98: // 'b'
聽聽聽聽聽聽聽聽聽聽聽 return 11;
聽
聽聽聽聽聽聽聽 case 99: // 'c'
聽聽聽聽聽聽聽聽聽聽聽 return 12;
聽
聽聽聽聽聽聽聽 case 100: // 'd'
聽聽聽聽聽聽聽聽聽聽聽 return 13;
聽
聽聽聽聽聽聽聽 case 101: // 'e'
聽聽聽聽聽聽聽聽聽聽聽 return 14;
聽
聽聽聽聽聽聽聽 case 102: // 'f'
聽聽聽聽聽聽聽聽聽聽聽 return 15;
聽
聽聽聽聽聽聽聽 case 58: // ':'
聽聽聽聽聽聽聽 case 59: // ';'
聽聽聽聽聽聽聽 case 60: // '<'
聽聽聽聽聽聽聽 case 61: // '='
聽聽聽聽聽聽聽 case 62: // '>'
聽聽聽聽聽聽聽 case 63: // '?'
聽聽聽聽聽聽聽 case 64: // '@'
聽聽聽聽聽聽聽 case 65: // 'A'
聽聽聽聽聽聽聽 case 66: // 'B'
聽聽聽聽聽聽聽 case 67: // 'C'
聽聽聽聽聽聽聽 case 68: // 'D'
聽聽聽聽聽聽聽 case 69: // 'E'
聽聽聽聽聽聽聽 case 70: // 'F'
聽聽聽聽聽聽聽 case 71: // 'G'
聽聽聽聽聽聽聽 case 72: // 'H'
聽聽聽聽聽聽聽 case 73: // 'I'
聽聽聽聽聽聽聽 case 74: // 'J'
聽聽聽聽聽聽聽 case 75: // 'K'
聽聽聽聽聽聽聽 case 76: // 'L'
聽聽聽聽聽聽聽 case 77: // 'M'
聽聽聽聽聽聽聽 case 78: // 'N'
聽聽聽聽聽聽聽 case 79: // 'O'
聽聽聽聽聽聽聽 case 80: // 'P'
聽聽聽聽聽聽聽 case 81: // 'Q'
聽聽聽聽聽聽聽 case 82: // 'R'
聽聽聽聽聽聽聽 case 83: // 'S'
聽聽聽聽聽聽聽 case 84: // 'T'
聽聽聽聽聽聽聽 case 85: // 'U'
聽聽聽聽聽聽聽 case 86: // 'V'
聽聽聽聽聽聽聽 case 87: // 'W'
聽聽聽聽聽聽聽 case 88: // 'X'
聽聽聽聽聽聽聽 case 89: // 'Y'
聽聽聽聽聽聽聽 case 90: // 'Z'
聽聽聽聽聽聽聽 case 91: // '['
聽聽聽聽聽聽聽 case 92: // '\\'
聽聽聽聽聽聽聽 case 93: // ']'
聽聽聽聽聽聽聽 case 94: // '^'
聽聽聽聽聽聽聽 case 95: // '_'
聽聽聽聽聽聽聽 case 96: // '`'
聽聽聽聽聽聽聽 default:
聽聽聽聽聽聽聽聽聽聽聽 return 0;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static String encodeBase64(String data)
聽聽聽 {
聽聽聽聽聽聽聽 byte bytes[] = null;
聽聽聽聽聽聽聽 try
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 bytes = data.getBytes("UTF-8");
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch(UnsupportedEncodingException uee)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 //Log.error(uee);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return encodeBase64(bytes);
聽聽聽 }
聽
聽聽聽 public static String decodeBase64(String data)
聽聽聽 {
聽聽聽聽聽聽聽 byte[] bytes = null;
聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽 bytes = data.getBytes("UTF-8");
聽聽聽聽聽聽聽聽聽 return new String(decodeBase64(bytes), "UTF-8");
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch (UnsupportedEncodingException ex) {
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return "";
聽聽聽 }
聽
聽聽聽 public static String encodeBase64(byte data[])
聽聽聽 {
聽聽聽聽聽聽聽 boolean lineSep = false;
聽聽聽聽聽聽聽 int sLen = data == null ? 0 : data.length;
聽聽聽聽聽聽聽 if(sLen == 0)
聽聽聽聽聽聽聽聽聽聽聽 return new String("");
聽聽聽聽聽聽聽 int eLen = (sLen / 3) * 3;
聽聽聽聽聽聽聽 int cCnt = (sLen - 1) / 3 + 1 << 2;
聽聽聽聽聽聽聽 int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0);
聽聽聽聽聽聽聽 char dArr[] = new char[dLen];
聽聽聽聽聽聽聽 int s = 0;
聽聽聽聽聽聽聽 int d = 0;
聽聽聽聽聽聽聽 int cc = 0;
聽聽聽聽聽聽聽 do
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 if(s >= eLen)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 break;
聽聽聽聽聽聽聽聽聽聽聽 int i = (data[s++] & 0xff) << 16 | (data[s++] & 0xff) << 8 | data[s++] & 0xff;
聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = CA[i >>> 18 & 0x3f];
聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = CA[i >>> 12 & 0x3f];
聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = CA[i >>> 6 & 0x3f];
聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = CA[i & 0x3f];
聽聽聽聽聽聽聽聽聽聽聽 if(lineSep && ++cc == 19 && d < dLen - 2)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = '\r';
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = '\n';
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 cc = 0;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 } while(true);
聽聽聽聽聽聽聽 int left = sLen - eLen;
聽聽聽聽聽聽聽 if(left > 0)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 int i = (data[eLen] & 0xff) << 10 | (left != 2 ? 0 : (data[sLen - 1] & 0xff) << 2);
聽聽聽聽聽聽聽聽聽聽聽 dArr[dLen - 4] = CA[i >> 12];
聽聽聽聽聽聽聽聽聽聽聽 dArr[dLen - 3] = CA[i >>> 6 & 0x3f];
聽聽聽聽聽聽聽聽聽聽聽 dArr[dLen - 2] = left != 2 ? '=' : CA[i & 0x3f];
聽聽聽聽聽聽聽聽聽聽聽 dArr[dLen - 1] = '=';
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return new String(dArr);
聽聽聽 }
聽
聽聽聽 public static final byte[] decodeBase64(byte bytes[])
聽聽聽 {
聽聽聽聽聽聽聽 int sLen = bytes.length;
聽聽聽聽聽聽聽 int sepCnt = 0;
聽聽聽聽聽聽聽 for(int i = 0; i < sLen; i++)
聽聽聽聽聽聽聽聽聽聽聽 if(IA[bytes[i] & 0xff] < 0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 sepCnt++;
聽
聽聽聽聽聽聽聽 if((sLen - sepCnt) % 4 != 0)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 int pad = 0;
聽聽聽聽聽聽聽 int i = sLen;
聽聽聽聽聽聽聽 do
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 if(i <= 1 || IA[bytes[--i] & 0xff] > 0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 break;
聽聽聽聽聽聽聽聽聽聽聽 if(bytes[i] == 61)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 pad++;
聽聽聽聽聽聽聽 } while(true);
聽聽聽聽聽聽聽 int len = ((sLen - sepCnt) * 6 >> 3) - pad;
聽聽聽聽聽聽聽 byte dArr[] = new byte[len];
聽聽聽聽聽聽聽 int s = 0;
聽聽聽聽聽聽聽 int d = 0;
聽聽聽聽聽聽聽 do
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 if(d >= len)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 break;
聽聽聽聽聽聽聽聽聽聽聽 i = 0;
聽聽聽聽聽聽聽聽聽聽聽 for(int j = 0; j < 4; j++)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int c = IA[bytes[s++] & 0xff];
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(c >= 0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 i |= c << 18 - j * 6;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 j--;
聽聽聽聽聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = (byte)(i >> 16);
聽聽聽聽聽聽聽聽聽聽聽 if(d < len)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = (byte)(i >> 8);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(d < len)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 dArr[d++] = (byte)i;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 } while(true);
聽聽聽聽聽聽聽 return dArr;
聽聽聽 }
聽
聽聽聽 public static String URLEncode(String original, String charset)
聽聽聽聽聽聽聽 throws UnsupportedEncodingException
聽聽聽 {
聽聽聽聽聽聽聽 if(original == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 byte octets[];
聽聽聽聽聽聽聽 try
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 octets = original.getBytes(charset);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch(UnsupportedEncodingException error)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 throw new UnsupportedEncodingException();
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(octets.length);
聽聽聽聽聽聽聽 for(int i = 0; i < octets.length; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 char c = (char)octets[i];
聽聽聽聽聽聽聽聽聽聽聽 if(allowed_query.get(c))
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append(c);
聽聽聽聽聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append('%');
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 byte b = octets[i];
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 char hexadecimal = Character.forDigit(b >> 4 & 0xf, 16);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append(Character.toUpperCase(hexadecimal));
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 hexadecimal = Character.forDigit(b & 0xf, 16);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buf.append(Character.toUpperCase(hexadecimal));
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 return buf.toString();
聽聽聽 }
聽
聽聽聽 public static final String[] toLowerCaseWordArray(String text)
聽聽聽 {
聽聽聽聽聽聽聽 if(text == null || text.length() == 0)
聽聽聽聽聽聽聽聽聽聽聽 return new String[0];
聽聽聽聽聽聽聽 ArrayList wordList = new ArrayList();
聽聽聽聽聽聽聽 BreakIterator boundary = BreakIterator.getWordInstance();
聽聽聽聽聽聽聽 boundary.setText(text);
聽聽聽聽聽聽聽 int start = 0;
聽聽聽聽聽聽聽 for(int end = boundary.next(); end != -1; end = boundary.next())
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 String tmp = text.substring(start, end).trim();
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, "+", "");
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, "/", "");
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, "\\", "");
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, "#", "");
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, "*", "");
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, ")", "");
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, "(", "");
聽聽聽聽聽聽聽聽聽聽聽 tmp = replace(tmp, "&", "");
聽聽聽聽聽聽聽聽聽聽聽 if(tmp.length() > 0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wordList.add(tmp);
聽聽聽聽聽聽聽聽聽聽聽 start = end;
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 return (String[])wordList.toArray(new String[wordList.size()]);
聽聽聽 }
聽
聽聽聽 public static final String randomString(int length)
聽聽聽 {
聽聽聽聽聽聽聽 if(length < 1)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 char randBuffer[] = new char[length];
聽聽聽聽聽聽聽 for(int i = 0; i < randBuffer.length; i++)
聽聽聽聽聽聽聽聽聽聽聽 randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];
聽
聽聽聽聽聽聽聽 return new String(randBuffer);
聽聽聽 }
聽
聽聽聽 public static final int randomInt(int number)
聽聽聽 {
聽聽聽聽聽聽聽 if(number>0)
聽聽聽聽聽聽聽聽聽聽聽 return randGen.nextInt(number)+1;
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽 return 1;
聽聽聽 }
聽
聽聽聽 public static final String chop(String string, int length)
聽聽聽 {
聽聽聽聽聽聽聽 if(string == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 if(length <= 0)
聽聽聽聽聽聽聽聽聽聽聽 throw new IllegalArgumentException("Length must be > 0");
聽聽聽聽聽聽聽 if(string.length() <= length + 2)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(string.substring(0, length));
聽聽聽聽聽聽聽聽聽聽聽 buf.append("...");
聽聽聽聽聽聽聽聽聽聽聽 return buf.toString();
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final String chopAtWord(String string, int length, int minLength)
聽聽聽 {
聽聽聽聽聽聽聽 if(length < 2)
聽聽聽聽聽聽聽聽聽聽聽 throw new IllegalArgumentException("Length specified (" + length + ") must be > 2");
聽聽聽聽聽聽聽 if(minLength >= length)
聽聽聽聽聽聽聽聽聽聽聽 throw new IllegalArgumentException("minLength must be smaller than length");
聽聽聽聽聽聽聽 int sLength = string != null ? string.length() : -1;
聽聽聽聽聽聽聽 if(sLength < 1)
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 if(minLength != -1 && sLength < minLength)
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 if(minLength == -1 && sLength < length)
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 char charArray[] = string.toCharArray();
聽聽聽聽聽聽聽 if(sLength > length)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 sLength = length;
聽聽聽聽聽聽聽聽聽聽聽 for(int i = 0; i < sLength - 1; i++)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(charArray[i] == '\r' && charArray[i + 1] == '\n')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return string.substring(0, i + 1);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(charArray[i] == '\n')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return string.substring(0, i);
聽聽聽聽聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽聽聽聽聽 if(charArray[sLength - 1] == '\n')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return string.substring(0, sLength - 1);
聽聽聽聽聽聽聽聽聽聽聽 for(int i = sLength - 1; i > 0; i--)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(charArray[i] == ' ')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return string.substring(0, i).trim();
聽
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 if(minLength != -1 && sLength > minLength)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 for(int i = 0; i < minLength; i++)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(charArray[i] == ' ')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return string;
聽
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 if(minLength > -1 && minLength <= string.length())
聽聽聽聽聽聽聽聽聽聽聽 return string.substring(0, minLength);
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽 return string.substring(0, length);
聽聽聽 }
聽
聽聽聽 public static final String chopAtWord(String string, int length)
聽聽聽 {
聽聽聽聽聽聽聽 return chopAtWord(string, length, -1);
聽聽聽 }
聽
聽聽聽 public static String chopAtWordsAround(String input, String wordList[], int numChars)
聽聽聽 {
聽聽聽聽聽聽聽 if(input == null || "".equals(input.trim()) || wordList == null || wordList.length == 0 || numChars == 0)
聽聽聽聽聽聽聽聽聽聽聽 return "";
聽聽聽聽聽聽聽 String lc = input.toLowerCase();
聽聽聽聽聽聽聽 for(int i = 0; i < wordList.length; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 int pos = lc.indexOf(wordList[i]);
聽聽聽聽聽聽聽聽聽聽聽 if(pos > -1)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int beginIdx = pos - numChars;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(beginIdx < 0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 beginIdx = 0;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int endIdx = pos + numChars;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(endIdx > input.length() - 1)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 endIdx = input.length() - 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 char chars[];
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for(chars = input.toCharArray(); beginIdx > 0 && chars[beginIdx] != ' ' && chars[beginIdx] != '\n' && chars[beginIdx] != '\r'; beginIdx--);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for(; endIdx < input.length() && chars[endIdx] != ' ' && chars[endIdx] != '\n' && chars[endIdx] != '\r'; endIdx++);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return input.substring(beginIdx, endIdx);
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 return input.substring(0, input.length() < 200 ? input.length() : 200);
聽聽聽 }
聽
聽聽聽 public static final String highlightWords(String string, String words[], String startHighlight, String endHighlight)
聽聽聽 {
聽聽聽聽聽聽聽 if(string == null || words == null || startHighlight == null || endHighlight == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 StringBuffer regexp = new StringBuffer();
聽聽聽聽聽聽聽 regexp.append("(?i)\\b(");
聽聽聽聽聽聽聽 for(int x = 0; x < words.length; x++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 words[x] = words[x].replaceAll("([\\$\\?\\|\\/\\.])", "\\\\$1");
聽聽聽聽聽聽聽聽聽聽聽 regexp.append(words[x]);
聽聽聽聽聽聽聽聽聽聽聽 if(x != words.length - 1)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 regexp.append("|");
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 regexp.append(")");
聽聽聽聽聽聽聽 return string.replaceAll(regexp.toString(), startHighlight + "$1" + endHighlight);
聽聽聽 }
聽
聽聽聽 public static final String escapeForSQL(String string)
聽聽聽 {
聽聽聽聽聽聽聽 if(string == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 if(string.length() == 0)
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 char input[] = string.toCharArray();
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 int last = 0;
聽聽聽聽聽聽聽 int len = input.length;
聽聽聽聽聽聽聽 StringBuffer out = null;
聽聽聽聽聽聽聽 for(; i < len; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 char ch = input[i];
聽聽聽聽聽聽聽聽聽聽聽 if(ch != '\'')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 if(out == null)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out = new StringBuffer(len + 2);
聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽 out.append('\'').append('\'');
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 if(out == null)
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽 return out.toString();
聽聽聽 }
聽
聽聽聽 public static final String escapeForXML(String string)
聽聽聽 {
聽聽聽聽聽聽聽 if(string == null)
聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 int last = 0;
聽聽聽聽聽聽聽 char input[] = string.toCharArray();
聽聽聽聽聽聽聽 int len = input.length;
聽聽聽聽聽聽聽 StringBuffer out = new StringBuffer((int)((double)len * 1.3D));
聽聽聽聽聽聽聽 for(; i < len; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 char ch = input[i];
聽聽聽聽聽聽聽聽聽聽聽 if(ch > '>')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '<')
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(LT_ENCODE);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '>')
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(GT_ENCODE);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '&')
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(AMP_ENCODE);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '"')
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(QUOTE_ENCODE);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 if(ch == '\n' || ch == '\r' || ch == '\t' || ch >= ' ')
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 continue;
聽聽聽聽聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽聽聽聽聽 last = i + 1;
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 if(last == 0)
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 if(i > last)
聽聽聽聽聽聽聽聽聽聽聽 out.append(input, last, i - last);
聽聽聽聽聽聽聽 return out.toString();
聽聽聽 }
聽
聽聽聽 public static final String unescapeFromXML(String string)
聽聽聽 {
聽聽聽聽聽聽聽 string = replace(string, "<", "<");
聽聽聽聽聽聽聽 string = replace(string, ">", ">");
聽聽聽聽聽聽聽 string = replace(string, """, "\"");
聽聽聽聽聽聽聽 return replace(string, "&", "&");
聽聽聽 }
聽
聽聽聽 public static final String zeroPadString(String string, int length)
聽聽聽 {
聽聽聽聽聽聽聽 if(string == null || string.length() > length)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return string;
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 StringBuffer buf = new StringBuffer(length);
聽聽聽聽聽聽聽聽聽聽聽 buf.append(zeroArray, 0, length - string.length()).append(string);
聽聽聽聽聽聽聽聽聽聽聽 return buf.toString();
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final String Encode(String input,String encode){
聽聽聽聽聽 if(input==null || "".equals(input)) return input;
聽聽聽聽聽 try {
聽聽聽聽聽聽聽 return new String(input.getBytes("iso-8859-1"), encode);
聽聽聽聽聽 }
聽聽聽聽聽 catch (UnsupportedEncodingException ex) {
聽聽聽聽聽聽聽 return "";
聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 public static final String getFileExtName(String filename)
聽聽聽 {
聽聽聽聽聽聽聽 String ext = "";
聽聽聽聽聽聽聽 int p = filename.lastIndexOf(".");
聽聽聽聽聽聽聽 if (p != -1)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 ext = filename.substring(p + 1, filename.length());
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return ext.toLowerCase();
聽聽聽 }
聽
聽聽聽 public static final String getPath(long id)
聽聽聽 {
聽聽聽聽聽聽聽 String returnStr = "";
聽聽聽聽聽聽聽 char charArray[] = String.valueOf(id).toCharArray();
聽聽聽聽聽聽聽 int j = charArray.length;
聽聽聽聽聽聽聽 for (int i = 0; i < j; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 returnStr += charArray[i] + File.separator;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return returnStr;
聽聽聽 }
聽
聽聽聽 public static final String getUrlPath(long id)
聽聽聽 {
聽聽聽聽聽聽聽 String returnStr = "";
聽聽聽聽聽聽聽 char charArray[] = String.valueOf(id).toCharArray();
聽聽聽聽聽聽聽 int j = charArray.length;
聽聽聽聽聽聽聽 for (int i = 0; i < j; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 returnStr += charArray[i] + "/";
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return returnStr;
聽聽聽 }
聽
聽聽聽 public static final String dateToMillis(Date date)
聽聽聽 {
聽聽聽聽聽 return "";
聽聽聽聽聽聽聽 /*if(ConnectionManager.getDateType() == 12)
聽聽聽聽聽聽聽聽聽聽聽 return zeroPadString(Long.toString(date.getTime()), 15);
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽 return Long.toString(date.getTime());*/
聽聽聽 }
聽
聽聽聽 /**
聽聽聽聽 * @param len 闇瑕佹樉紺虹殑闀垮害(<font color="red">娉ㄦ剰錛氶暱搴︽槸浠yte涓哄崟浣嶇殑錛屼竴涓眽瀛楁槸2涓猙yte</font>)
聽聽聽聽 * @param symbol 鐢ㄤ簬琛ㄧず鐪佺暐鐨勪俊鎭殑瀛楃錛屽鈥?..鈥?鈥?gt;>>鈥濈瓑銆?br />聽聽聽聽 * @return 榪斿洖澶勭悊鍚庣殑瀛楃涓?br />聽聽聽聽 */
聽聽聽 public static String getLimitLengthString(String str,int len, String symbol) throws
聽聽聽聽聽聽聽聽聽聽聽 UnsupportedEncodingException
聽聽聽 {
聽聽聽聽聽聽聽 if(str==null || "".equals(str)) return str;
聽聽聽聽聽聽聽 int counterOfDoubleByte;
聽聽聽聽聽聽聽 byte b[];
聽聽聽聽聽聽聽 counterOfDoubleByte = 0;
聽聽聽聽聽聽聽 b = str.getBytes("GBK");
聽聽聽聽聽聽聽 if (b.length <= len)
聽聽聽聽聽聽聽聽聽聽聽 return str;
聽聽聽聽聽聽聽 for (int i = 0; i < len; i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 if (b[i] < 0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 counterOfDoubleByte++;
聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽 if (counterOfDoubleByte % 2 == 0)
聽聽聽聽聽聽聽聽聽聽聽 return new String(b, 0, len, "GBK") + symbol;
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽 return new String(b, 0, len - 1, "GBK") + symbol;
聽聽聽 }
聽
聽
聽聽聽 public static boolean isValidEmailAddress(String addr)
聽聽聽 {
聽聽聽聽聽聽聽 if(addr == null)
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 addr = addr.trim();
聽聽聽聽聽聽聽 if(addr.length() == 0)
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 Matcher matcher = basicAddressPattern.matcher(addr);
聽聽聽聽聽聽聽 if(!matcher.matches())
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 String userPart = matcher.group(1);
聽聽聽聽聽聽聽 String domainPart = matcher.group(2);
聽聽聽聽聽聽聽 matcher = validUserPattern.matcher(userPart);
聽聽聽聽聽聽聽 if(!matcher.matches())
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 matcher = ipDomainPattern.matcher(domainPart);
聽聽聽聽聽聽聽 if(matcher.matches())
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 for(int i = 1; i < 5; i++)
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String num = matcher.group(i);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(num == null)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(Integer.parseInt(num) > 254)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 matcher = domainPattern.matcher(domainPart);
聽聽聽聽聽聽聽 if(matcher.matches())
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 String tld = matcher.group(matcher.groupCount());
聽聽聽聽聽聽聽聽聽聽聽 matcher = tldPattern.matcher(tld);
聽聽聽聽聽聽聽聽聽聽聽 return tld.length() == 3 || matcher.matches();
聽聽聽聽聽聽聽 } else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 /**
聽聽聽聽 * 鍒ゆ柇鏄惁涓烘暟瀛楃粍鎴愮殑瀛椾覆
聽聽聽聽 * @param validString 瑕佸垽鏂殑瀛楃涓?br />聽聽聽聽 * @return boolen鍊鹼紝true鎴杅alse
聽聽聽聽 */
聽聽聽 public static boolean isNumber(String validString){
聽聽聽聽聽 try
聽聽聽聽聽 {
聽聽聽聽聽聽聽 if (validString == null)
聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽 byte[] tempbyte = validString.getBytes();
聽聽聽聽聽聽聽 for (int i = 0; i < validString.length(); i++) {
聽聽聽聽聽聽聽聽聽 //by=tempbyte[i];
聽聽聽聽聽聽聽聽聽 if ( (tempbyte[i] < 48) || (tempbyte[i] > 57)) {
聽聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return true;
聽聽聽聽聽 }
聽聽聽聽聽 catch(Exception ex)
聽聽聽聽聽 {
聽聽聽聽聽聽聽 return false;
聽聽聽聽聽 }
聽 }
聽
聽聽聽 private static final char QUOTE_ENCODE[] = """.toCharArray();
聽聽聽 private static final char AMP_ENCODE[] = "&".toCharArray();
聽聽聽 private static final char LT_ENCODE[] = "<".toCharArray();
聽聽聽 private static final char GT_ENCODE[] = ">".toCharArray();
聽聽聽 private static Pattern basicAddressPattern;
聽聽聽 private static Pattern validUserPattern;
聽聽聽 private static Pattern domainPattern;
聽聽聽 private static Pattern ipDomainPattern;
聽聽聽 private static Pattern tldPattern;
聽聽聽 private static MessageDigest digest = null;
聽聽聽 private static final char CA[];
聽聽聽 private static final int IA[];
聽聽聽 private static final BitSet allowed_query;
聽聽聽 private static Random randGen = new Random();
聽聽聽 private static char numbersAndLetters[] = "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
聽聽聽 private static final char zeroArray[] = "0000000000000000000000000000000000000000000000000000000000000000".toCharArray();
聽聽聽 private static MD5 md5 = new MD5();
聽
聽聽聽 static
聽聽聽 {
聽聽聽聽聽聽聽 String basicAddress = "^([\\w\\.-]+)@([\\w\\.-]+)$";
聽聽聽聽聽聽聽 String specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
聽聽聽聽聽聽聽 String validChars = "[^ \f\n\r\t" + specialChars + "]";
聽聽聽聽聽聽聽 String atom = validChars + "+";
聽聽聽聽聽聽聽 String quotedUser = "(\"[^\"]+\")";
聽聽聽聽聽聽聽 String word = "(" + atom + "|" + quotedUser + ")";
聽聽聽聽聽聽聽 String validUser = "^" + word + "(\\." + word + ")*$";
聽聽聽聽聽聽聽 String domain = "^" + atom + "(\\." + atom + ")+$";
聽聽聽聽聽聽聽 String ipDomain = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$";
聽聽聽聽聽聽聽 String knownTLDs = "^\\.(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$";
聽聽聽聽聽聽聽 basicAddressPattern = Pattern.compile(basicAddress, 2);
聽聽聽聽聽聽聽 validUserPattern = Pattern.compile(validUser, 2);
聽聽聽聽聽聽聽 domainPattern = Pattern.compile(domain, 2);
聽聽聽聽聽聽聽 ipDomainPattern = Pattern.compile(ipDomain, 2);
聽聽聽聽聽聽聽 tldPattern = Pattern.compile(knownTLDs, 2);
聽聽聽聽聽聽聽 CA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
聽聽聽聽聽聽聽 IA = new int[256];
聽聽聽聽聽聽聽 Arrays.fill(IA, -1);
聽聽聽聽聽聽聽 int i = 0;
聽聽聽聽聽聽聽 for(int iS = CA.length; i < iS; i++)
聽聽聽聽聽聽聽聽聽聽聽 IA[CA[i]] = i;
聽
聽聽聽聽聽聽聽 IA[61] = 0;
聽聽聽聽聽聽聽 allowed_query = new BitSet(256);
聽聽聽聽聽聽聽 for(i = 48; i <= 57; i++)
聽聽聽聽聽聽聽聽聽聽聽 allowed_query.set(i);
聽
聽聽聽聽聽聽聽 for(i = 97; i <= 122; i++)
聽聽聽聽聽聽聽聽聽聽聽 allowed_query.set(i);
聽
聽聽聽聽聽聽聽 for(i = 65; i <= 90; i++)
聽聽聽聽聽聽聽聽聽聽聽 allowed_query.set(i);
聽
聽聽聽聽聽聽聽 allowed_query.set(45);
聽聽聽聽聽聽聽 allowed_query.set(95);
聽聽聽聽聽聽聽 allowed_query.set(46);
聽聽聽聽聽聽聽 allowed_query.set(33);
聽聽聽聽聽聽聽 allowed_query.set(126);
聽聽聽聽聽聽聽 allowed_query.set(42);
聽聽聽聽聽聽聽 allowed_query.set(39);
聽聽聽聽聽聽聽 allowed_query.set(40);
聽聽聽聽聽聽聽 allowed_query.set(41);
聽
聽
聽聽聽 }
}