﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我心飞翔-文章分类-java共享代码</title><link>http://www.blogjava.net/parable-myth/category/16208.html</link><description>JAVA、LINUX我的爱 我的世界</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 07:54:20 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 07:54:20 GMT</pubDate><ttl>60</ttl><item><title>md5算法</title><link>http://www.blogjava.net/parable-myth/articles/74631.html</link><dc:creator>我心飞翔</dc:creator><author>我心飞翔</author><pubDate>Wed, 11 Oct 2006 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/parable-myth/articles/74631.html</guid><wfw:comment>http://www.blogjava.net/parable-myth/comments/74631.html</wfw:comment><comments>http://www.blogjava.net/parable-myth/articles/74631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/parable-myth/comments/commentRss/74631.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/parable-myth/services/trackbacks/74631.html</trackback:ping><description><![CDATA[
		<pre>
				<font color="navy">
						<b>package</b>
				</font> com.chinajavaworld.util;<br /> <br /><font color="navy"><b>import</b></font> java.lang.reflect.*;<br /><font color="navy"><b>import</b></font> java.io.*;<br /><font color="darkgreen">/*************************************************<br />md5 类实现了RSA Data Security, Inc.在提交给IETF<br />的RFC1321中的MD5 message-digest 算法。<br />*************************************************/</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>class</b></font> MD5 <font color="navy">{</font><br /><font color="darkgreen">/* 下面这些S11-S44实际上是一个4*4的矩阵，在原始的C实现中是用#define 实现的，<br />        这里把它们实现成为static final是表示了只读，切能在同一个进程空间内的多个<br />        Instance间共享*/</font><br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S11 = 7;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S12 = 12;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S13 = 17;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S14 = 22;<br /> <br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S21 = 5;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S22 = 9;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S23 = 14;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S24 = 20;<br /> <br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S31 = 4;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S32 = 11;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S33 = 16;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S34 = 23;<br /> <br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S41 = 6;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S42 = 10;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S43 = 15;<br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> S44 = 21;<br /> <br /><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>byte</b></font>[] PADDING = <font color="navy">{</font> -128, 0, 0, 0, 0, 0, 0, 0, 0,<br />        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br />        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br />        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 <font color="navy">}</font>;<br /><font color="darkgreen">/* 下面的三个成员是MD5计算过程中用到的3个核心数据，在原始的C实现中<br />           被定义到MD5_CTX结构中<br /><br />         */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font>[] state = <font color="navy"><b>new</b></font><font color="navy"><b>long</b></font>[4];  <font color="darkgreen">// state (ABCD)</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font>[] count = <font color="navy"><b>new</b></font><font color="navy"><b>long</b></font>[2];  <font color="darkgreen">// number of bits, modulo 2^64 (lsb first)</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>byte</b></font>[] buffer = <font color="navy"><b>new</b></font><font color="navy"><b>byte</b></font>[64]; <font color="darkgreen">// input buffer</font><br /> <br /><font color="darkgreen">/* digestHexStr是MD5的唯一一个公共成员，是最新一次计算结果的<br />        　 16进制ASCII表示.<br />        */</font><br /><font color="navy"><b>public</b></font> String digestHexStr;<br /> <br /><font color="darkgreen">/* digest,是最新一次计算结果的2进制内部表示，表示128bit的MD5值.<br />        */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>byte</b></font>[] digest = <font color="navy"><b>new</b></font><font color="navy"><b>byte</b></font>[16];<br /> <br /><font color="darkgreen">/*<br />          getMD5ofStr是类MD5最主要的公共方法，入口参数是你想要进行MD5变换的字符串<br />          返回的是变换完的结果，这个结果是从公共成员digestHexStr取得的．<br />        */</font><br /><font color="navy"><b>public</b></font> String getMD5ofStr(String inbuf) <font color="navy">{</font><br />                md5Init();<br /><font color="navy"><b>try</b></font><font color="navy">{</font><br />                  md5Update(inbuf.getBytes(<font color="red">"GBK"</font>),<br />                            inbuf.getBytes(<font color="red">"GBK"</font>).length);<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font> (UnsupportedEncodingException ex) <font color="navy">{</font><br /><font color="navy">}</font><br />                md5Final();<br />                digestHexStr = <font color="red">""</font>;<br /><font color="navy"><b>for</b></font> (<font color="navy"><b>int</b></font> i = 0; i &lt; 16; i++) <font color="navy">{</font><br />                        digestHexStr += byteHEX(digest[i]);<br /><font color="navy">}</font><br /><font color="navy"><b>return</b></font> digestHexStr;<br /> <br /><font color="navy">}</font><br /><font color="darkgreen">// 这是MD5这个类的标准构造函数，JavaBean要求有一个public的并且没有参数的构造函数</font><br /><font color="navy"><b>public</b></font> MD5() <font color="navy">{</font><br />                md5Init();<br /> <br /><font color="navy"><b>return</b></font>;<br /><font color="navy">}</font><br /> <br /> <br /> <br /><font color="darkgreen">/* md5Init是一个初始化函数，初始化核心变量，装入标准的幻数 */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>void</b></font> md5Init() <font color="navy">{</font><br />                count[0] = 0L;<br />                count[1] = 0L;<br /><font color="darkgreen">///* Load magic initialization constants.</font><br /> <br />                state[0] = 0x67452301L;<br />                state[1] = 0xefcdab89L;<br />                state[2] = 0x98badcfeL;<br />                state[3] = 0x10325476L;<br /> <br /><font color="navy"><b>return</b></font>;<br /><font color="navy">}</font><br /><font color="darkgreen">/* F, G, H ,I 是4个基本的MD5函数，在原始的MD5的C实现中，由于它们是<br />        简单的位运算，可能出于效率的考虑把它们实现成了宏，在java中，我们把它们<br />     　　实现成了private方法，名字保持了原来C中的。 */</font><br /> <br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> F(<font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> y, <font color="navy"><b>long</b></font> z) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> (x &amp; y) | ((~x) &amp; z);<br /> <br /><font color="navy">}</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> G(<font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> y, <font color="navy"><b>long</b></font> z) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> (x &amp; z) | (y &amp; (~z));<br /> <br /><font color="navy">}</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> H(<font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> y, <font color="navy"><b>long</b></font> z) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> x ^ y ^ z;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> I(<font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> y, <font color="navy"><b>long</b></font> z) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> y ^ (x | (~z));<br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/*<br />          FF,GG,HH和II将调用F,G,H,I进行近一步变换<br />          FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.<br />          Rotation is separate from addition to prevent recomputation.<br />       */</font><br /> <br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> FF(<font color="navy"><b>long</b></font> a, <font color="navy"><b>long</b></font> b, <font color="navy"><b>long</b></font> c, <font color="navy"><b>long</b></font> d, <font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> s,<br /><font color="navy"><b>long</b></font> ac) <font color="navy">{</font><br />                a += F (b, c, d) + x + ac;<br />                a = ((<font color="navy"><b>int</b></font>) a &lt;&lt; s) | ((<font color="navy"><b>int</b></font>) a &gt;&gt;&gt; (32 - s));<br />                a += b;<br /><font color="navy"><b>return</b></font> a;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> GG(<font color="navy"><b>long</b></font> a, <font color="navy"><b>long</b></font> b, <font color="navy"><b>long</b></font> c, <font color="navy"><b>long</b></font> d, <font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> s,<br /><font color="navy"><b>long</b></font> ac) <font color="navy">{</font><br />                a += G (b, c, d) + x + ac;<br />                a = ((<font color="navy"><b>int</b></font>) a &lt;&lt; s) | ((<font color="navy"><b>int</b></font>) a &gt;&gt;&gt; (32 - s));<br />                a += b;<br /><font color="navy"><b>return</b></font> a;<br /><font color="navy">}</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> HH(<font color="navy"><b>long</b></font> a, <font color="navy"><b>long</b></font> b, <font color="navy"><b>long</b></font> c, <font color="navy"><b>long</b></font> d, <font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> s,<br /><font color="navy"><b>long</b></font> ac) <font color="navy">{</font><br />                a += H (b, c, d) + x + ac;<br />                a = ((<font color="navy"><b>int</b></font>) a &lt;&lt; s) | ((<font color="navy"><b>int</b></font>) a &gt;&gt;&gt; (32 - s));<br />                a += b;<br /><font color="navy"><b>return</b></font> a;<br /><font color="navy">}</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>long</b></font> II(<font color="navy"><b>long</b></font> a, <font color="navy"><b>long</b></font> b, <font color="navy"><b>long</b></font> c, <font color="navy"><b>long</b></font> d, <font color="navy"><b>long</b></font> x, <font color="navy"><b>long</b></font> s,<br /><font color="navy"><b>long</b></font> ac) <font color="navy">{</font><br />                a += I (b, c, d) + x + ac;<br />                a = ((<font color="navy"><b>int</b></font>) a &lt;&lt; s) | ((<font color="navy"><b>int</b></font>) a &gt;&gt;&gt; (32 - s));<br />                a += b;<br /><font color="navy"><b>return</b></font> a;<br /><font color="navy">}</font><br /><font color="darkgreen">/*<br />         md5Update是MD5的主计算过程，inbuf是要变换的字节串，inputlen是长度，这个<br />         函数由getMD5ofStr调用，调用之前需要调用md5init，因此把它设计成private的<br />        */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>void</b></font> md5Update(<font color="navy"><b>byte</b></font>[] inbuf, <font color="navy"><b>int</b></font> inputLen) <font color="navy">{</font><br /> <br /><font color="navy"><b>int</b></font> i, index, partLen;<br /><font color="navy"><b>byte</b></font>[] block = <font color="navy"><b>new</b></font><font color="navy"><b>byte</b></font>[64];<br />                index = (<font color="navy"><b>int</b></font>)(count[0] &gt;&gt;&gt; 3) &amp; 0x3F;<br /><font color="darkgreen">// /* Update number of bits */</font><br /><font color="navy"><b>if</b></font> ((count[0] += (inputLen &lt;&lt; 3)) &lt; (inputLen &lt;&lt; 3))<br />                        count[1]++;<br />                count[1] += (inputLen &gt;&gt;&gt; 29);<br /> <br />                partLen = 64 - index;<br /> <br /><font color="darkgreen">// Transform as many times as possible.</font><br /><font color="navy"><b>if</b></font> (inputLen &gt;= partLen) <font color="navy">{</font><br />                        md5Memcpy(buffer, inbuf, index, 0, partLen);<br />                        md5Transform(buffer);<br /> <br /><font color="navy"><b>for</b></font> (i = partLen; i + 63 &lt; inputLen; i += 64) <font color="navy">{</font><br /> <br />                                md5Memcpy(block, inbuf, 0, i, 64);<br />                                md5Transform (block);<br /><font color="navy">}</font><br />                        index = 0;<br /> <br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /> <br />                        i = 0;<br /> <br /><font color="darkgreen">///* Buffer remaining input */</font><br />                md5Memcpy(buffer, inbuf, index, i, inputLen - i);<br /> <br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/*<br />          md5Final整理和填写输出结果<br />        */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>void</b></font> md5Final () <font color="navy">{</font><br /><font color="navy"><b>byte</b></font>[] bits = <font color="navy"><b>new</b></font><font color="navy"><b>byte</b></font>[8];<br /><font color="navy"><b>int</b></font> index, padLen;<br /> <br /><font color="darkgreen">///* Save number of bits */</font><br />                Encode (bits, count, 8);<br /> <br /><font color="darkgreen">///* Pad out to 56 mod 64.</font><br />                index = (<font color="navy"><b>int</b></font>)(count[0] &gt;&gt;&gt; 3) &amp; 0x3f;<br />                padLen = (index &lt; 56) ? (56 - index) : (120 - index);<br />                md5Update (PADDING, padLen);<br /> <br /><font color="darkgreen">///* Append length (before padding) */</font><br />                md5Update(bits, 8);<br /> <br /><font color="darkgreen">///* Store state in digest */</font><br />                Encode (digest, state, 16);<br /> <br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/* md5Memcpy是一个内部使用的byte数组的块拷贝函数，从input的inpos开始把len长度的<br />　　　　　 字节拷贝到output的outpos位置开始<br />        */</font><br /> <br /><font color="navy"><b>private</b></font><font color="navy"><b>void</b></font> md5Memcpy (<font color="navy"><b>byte</b></font>[] output, <font color="navy"><b>byte</b></font>[] input,<br /><font color="navy"><b>int</b></font> outpos, <font color="navy"><b>int</b></font> inpos, <font color="navy"><b>int</b></font> len)<br /><font color="navy">{</font><br /><font color="navy"><b>int</b></font> i;<br /> <br /><font color="navy"><b>for</b></font> (i = 0; i &lt; len; i++)<br />                        output[outpos + i] = input[inpos + i];<br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/*<br />           md5Transform是MD5核心变换程序，有md5Update调用，block是分块的原始字节<br />        */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>void</b></font> md5Transform (<font color="navy"><b>byte</b></font> block[]) <font color="navy">{</font><br /><font color="navy"><b>long</b></font> a = state[0], b = state[1], c = state[2], d = state[3];<br /><font color="navy"><b>long</b></font>[] x = <font color="navy"><b>new</b></font><font color="navy"><b>long</b></font>[16];<br /> <br />                Decode (x, block, 64);<br /> <br /><font color="darkgreen">/* Round 1 */</font><br />                a = FF (a, b, c, d, x[0], S11, 0xd76aa478L); <font color="darkgreen">/* 1 */</font><br />                d = FF (d, a, b, c, x[1], S12, 0xe8c7b756L); <font color="darkgreen">/* 2 */</font><br />                c = FF (c, d, a, b, x[2], S13, 0x242070dbL); <font color="darkgreen">/* 3 */</font><br />                b = FF (b, c, d, a, x[3], S14, 0xc1bdceeeL); <font color="darkgreen">/* 4 */</font><br />                a = FF (a, b, c, d, x[4], S11, 0xf57c0fafL); <font color="darkgreen">/* 5 */</font><br />                d = FF (d, a, b, c, x[5], S12, 0x4787c62aL); <font color="darkgreen">/* 6 */</font><br />                c = FF (c, d, a, b, x[6], S13, 0xa8304613L); <font color="darkgreen">/* 7 */</font><br />                b = FF (b, c, d, a, x[7], S14, 0xfd469501L); <font color="darkgreen">/* 8 */</font><br />                a = FF (a, b, c, d, x[8], S11, 0x698098d8L); <font color="darkgreen">/* 9 */</font><br />                d = FF (d, a, b, c, x[9], S12, 0x8b44f7afL); <font color="darkgreen">/* 10 */</font><br />                c = FF (c, d, a, b, x[10], S13, 0xffff5bb1L); <font color="darkgreen">/* 11 */</font><br />                b = FF (b, c, d, a, x[11], S14, 0x895cd7beL); <font color="darkgreen">/* 12 */</font><br />                a = FF (a, b, c, d, x[12], S11, 0x6b901122L); <font color="darkgreen">/* 13 */</font><br />                d = FF (d, a, b, c, x[13], S12, 0xfd987193L); <font color="darkgreen">/* 14 */</font><br />                c = FF (c, d, a, b, x[14], S13, 0xa679438eL); <font color="darkgreen">/* 15 */</font><br />                b = FF (b, c, d, a, x[15], S14, 0x49b40821L); <font color="darkgreen">/* 16 */</font><br /> <br /><font color="darkgreen">/* Round 2 */</font><br />                a = GG (a, b, c, d, x[1], S21, 0xf61e2562L); <font color="darkgreen">/* 17 */</font><br />                d = GG (d, a, b, c, x[6], S22, 0xc040b340L); <font color="darkgreen">/* 18 */</font><br />                c = GG (c, d, a, b, x[11], S23, 0x265e5a51L); <font color="darkgreen">/* 19 */</font><br />                b = GG (b, c, d, a, x[0], S24, 0xe9b6c7aaL); <font color="darkgreen">/* 20 */</font><br />                a = GG (a, b, c, d, x[5], S21, 0xd62f105dL); <font color="darkgreen">/* 21 */</font><br />                d = GG (d, a, b, c, x[10], S22, 0x2441453L); <font color="darkgreen">/* 22 */</font><br />                c = GG (c, d, a, b, x[15], S23, 0xd8a1e681L); <font color="darkgreen">/* 23 */</font><br />                b = GG (b, c, d, a, x[4], S24, 0xe7d3fbc8L); <font color="darkgreen">/* 24 */</font><br />                a = GG (a, b, c, d, x[9], S21, 0x21e1cde6L); <font color="darkgreen">/* 25 */</font><br />                d = GG (d, a, b, c, x[14], S22, 0xc33707d6L); <font color="darkgreen">/* 26 */</font><br />                c = GG (c, d, a, b, x[3], S23, 0xf4d50d87L); <font color="darkgreen">/* 27 */</font><br />                b = GG (b, c, d, a, x[8], S24, 0x455a14edL); <font color="darkgreen">/* 28 */</font><br />                a = GG (a, b, c, d, x[13], S21, 0xa9e3e905L); <font color="darkgreen">/* 29 */</font><br />                d = GG (d, a, b, c, x[2], S22, 0xfcefa3f8L); <font color="darkgreen">/* 30 */</font><br />                c = GG (c, d, a, b, x[7], S23, 0x676f02d9L); <font color="darkgreen">/* 31 */</font><br />                b = GG (b, c, d, a, x[12], S24, 0x8d2a4c8aL); <font color="darkgreen">/* 32 */</font><br /> <br /><font color="darkgreen">/* Round 3 */</font><br />                a = HH (a, b, c, d, x[5], S31, 0xfffa3942L); <font color="darkgreen">/* 33 */</font><br />                d = HH (d, a, b, c, x[8], S32, 0x8771f681L); <font color="darkgreen">/* 34 */</font><br />                c = HH (c, d, a, b, x[11], S33, 0x6d9d6122L); <font color="darkgreen">/* 35 */</font><br />                b = HH (b, c, d, a, x[14], S34, 0xfde5380cL); <font color="darkgreen">/* 36 */</font><br />                a = HH (a, b, c, d, x[1], S31, 0xa4beea44L); <font color="darkgreen">/* 37 */</font><br />                d = HH (d, a, b, c, x[4], S32, 0x4bdecfa9L); <font color="darkgreen">/* 38 */</font><br />                c = HH (c, d, a, b, x[7], S33, 0xf6bb4b60L); <font color="darkgreen">/* 39 */</font><br />                b = HH (b, c, d, a, x[10], S34, 0xbebfbc70L); <font color="darkgreen">/* 40 */</font><br />                a = HH (a, b, c, d, x[13], S31, 0x289b7ec6L); <font color="darkgreen">/* 41 */</font><br />                d = HH (d, a, b, c, x[0], S32, 0xeaa127faL); <font color="darkgreen">/* 42 */</font><br />                c = HH (c, d, a, b, x[3], S33, 0xd4ef3085L); <font color="darkgreen">/* 43 */</font><br />                b = HH (b, c, d, a, x[6], S34, 0x4881d05L); <font color="darkgreen">/* 44 */</font><br />                a = HH (a, b, c, d, x[9], S31, 0xd9d4d039L); <font color="darkgreen">/* 45 */</font><br />                d = HH (d, a, b, c, x[12], S32, 0xe6db99e5L); <font color="darkgreen">/* 46 */</font><br />                c = HH (c, d, a, b, x[15], S33, 0x1fa27cf8L); <font color="darkgreen">/* 47 */</font><br />                b = HH (b, c, d, a, x[2], S34, 0xc4ac5665L); <font color="darkgreen">/* 48 */</font><br /> <br /><font color="darkgreen">/* Round 4 */</font><br />                a = II (a, b, c, d, x[0], S41, 0xf4292244L); <font color="darkgreen">/* 49 */</font><br />                d = II (d, a, b, c, x[7], S42, 0x432aff97L); <font color="darkgreen">/* 50 */</font><br />                c = II (c, d, a, b, x[14], S43, 0xab9423a7L); <font color="darkgreen">/* 51 */</font><br />                b = II (b, c, d, a, x[5], S44, 0xfc93a039L); <font color="darkgreen">/* 52 */</font><br />                a = II (a, b, c, d, x[12], S41, 0x655b59c3L); <font color="darkgreen">/* 53 */</font><br />                d = II (d, a, b, c, x[3], S42, 0x8f0ccc92L); <font color="darkgreen">/* 54 */</font><br />                c = II (c, d, a, b, x[10], S43, 0xffeff47dL); <font color="darkgreen">/* 55 */</font><br />                b = II (b, c, d, a, x[1], S44, 0x85845dd1L); <font color="darkgreen">/* 56 */</font><br />                a = II (a, b, c, d, x[8], S41, 0x6fa87e4fL); <font color="darkgreen">/* 57 */</font><br />                d = II (d, a, b, c, x[15], S42, 0xfe2ce6e0L); <font color="darkgreen">/* 58 */</font><br />                c = II (c, d, a, b, x[6], S43, 0xa3014314L); <font color="darkgreen">/* 59 */</font><br />                b = II (b, c, d, a, x[13], S44, 0x4e0811a1L); <font color="darkgreen">/* 60 */</font><br />                a = II (a, b, c, d, x[4], S41, 0xf7537e82L); <font color="darkgreen">/* 61 */</font><br />                d = II (d, a, b, c, x[11], S42, 0xbd3af235L); <font color="darkgreen">/* 62 */</font><br />                c = II (c, d, a, b, x[2], S43, 0x2ad7d2bbL); <font color="darkgreen">/* 63 */</font><br />                b = II (b, c, d, a, x[9], S44, 0xeb86d391L); <font color="darkgreen">/* 64 */</font><br /> <br />                state[0] += a;<br />                state[1] += b;<br />                state[2] += c;<br />                state[3] += d;<br /> <br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/*Encode把long数组按顺序拆成byte数组，因为java的long类型是64bit的，<br />          只拆低32bit，以适应原始C实现的用途<br />        */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>void</b></font> Encode (<font color="navy"><b>byte</b></font>[] output, <font color="navy"><b>long</b></font>[] input, <font color="navy"><b>int</b></font> len) <font color="navy">{</font><br /><font color="navy"><b>int</b></font> i, j;<br /> <br /><font color="navy"><b>for</b></font> (i = 0, j = 0; j &lt; len; i++, j += 4) <font color="navy">{</font><br />                        output[j] = (<font color="navy"><b>byte</b></font>)(input[i] &amp; 0xffL);<br />                        output[j + 1] = (<font color="navy"><b>byte</b></font>)((input[i] &gt;&gt;&gt; 8) &amp; 0xffL);<br />                        output[j + 2] = (<font color="navy"><b>byte</b></font>)((input[i] &gt;&gt;&gt; 16) &amp; 0xffL);<br />                        output[j + 3] = (<font color="navy"><b>byte</b></font>)((input[i] &gt;&gt;&gt; 24) &amp; 0xffL);<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/*Decode把byte数组按顺序合成成long数组，因为java的long类型是64bit的，<br />          只合成低32bit，高32bit清零，以适应原始C实现的用途<br />        */</font><br /><font color="navy"><b>private</b></font><font color="navy"><b>void</b></font> Decode (<font color="navy"><b>long</b></font>[] output, <font color="navy"><b>byte</b></font>[] input, <font color="navy"><b>int</b></font> len) <font color="navy">{</font><br /><font color="navy"><b>int</b></font> i, j;<br /> <br /> <br /><font color="navy"><b>for</b></font> (i = 0, j = 0; j &lt; len; i++, j += 4)<br />                        output[i] = b2iu(input[j]) |<br />                                (b2iu(input[j + 1]) &lt;&lt; 8) |<br />                                (b2iu(input[j + 2]) &lt;&lt; 16) |<br />                                (b2iu(input[j + 3]) &lt;&lt; 24);<br /> <br /><font color="navy"><b>return</b></font>;<br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/*<br />          b2iu是我写的一个把byte按照不考虑正负号的原则的＂升位＂程序，因为java没有unsigned运算<br />        */</font><br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>long</b></font> b2iu(<font color="navy"><b>byte</b></font> b) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> b &lt; 0 ? b &amp; 0x7F + 128 : b;<br /><font color="navy">}</font><br /> <br /><font color="darkgreen">/*byteHEX()，用来把一个byte类型的数转换成十六进制的ASCII表示，<br />        　因为java中的byte的toString无法实现这一点，我们又没有C语言中的<br />          sprintf(outbuf,"%02X",ib)<br />        */</font><br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String byteHEX(<font color="navy"><b>byte</b></font> ib) <font color="navy">{</font><br /><font color="navy"><b>char</b></font>[] Digit = <font color="navy">{</font><font color="navy">'0'</font>,<font color="navy">'1'</font>,<font color="navy">'2'</font>,<font color="navy">'3'</font>,<font color="navy">'4'</font>,<font color="navy">'5'</font>,<font color="navy">'6'</font>,<font color="navy">'7'</font>,<font color="navy">'8'</font>,<font color="navy">'9'</font>,<br /><font color="navy">'A'</font>,<font color="navy">'B'</font>,<font color="navy">'C'</font>,<font color="navy">'D'</font>,<font color="navy">'E'</font>,<font color="navy">'F'</font><font color="navy">}</font>;<br /><font color="navy"><b>char</b></font> [] ob = <font color="navy"><b>new</b></font><font color="navy"><b>char</b></font>[2];<br />                ob[0] = Digit[(ib &gt;&gt;&gt; 4) &amp; 0X0F];<br />                ob[1] = Digit[ib &amp; 0X0F];<br />                String s = <font color="navy"><b>new</b></font> String(ob);<br /><font color="navy"><b>return</b></font> s;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>void</b></font> main(String args[]) <font color="navy">{</font><br /> <br /> <br />                MD5 m = <font color="navy"><b>new</b></font> MD5();<br /><font color="navy"><b>if</b></font> (Array.getLength(args) == 0) <font color="navy">{</font><font color="darkgreen">//如果没有参数，执行标准的Test Suite</font><br /> <br />                               System.out.println(<font color="red">"MD5 Test suite:"</font>);<br />                        System.out.println(<font color="red">"MD5(\"\"):"</font>+m.getMD5ofStr(<font color="red">""</font>));<br />                        System.out.println(<font color="red">"MD5(\"a\"):"</font>+m.getMD5ofStr(<font color="red">"a"</font>));<br />                        System.out.println(<font color="red">"MD5(\"abc\"):"</font>+m.getMD5ofStr(<font color="red">"abc"</font>));<br />                        System.out.println(<font color="red">"MD5(\"message digest\"):"</font>+m.getMD5ofStr(<font color="red">"message digest"</font>));<br />                        System.out.println(<font color="red">"MD5(\"abcdefghijklmnopqrstuvwxyz\"):"</font>+<br />                        m.getMD5ofStr(<font color="red">"abcdefghijklmnopqrstuvwxyz"</font>));<br />                        System.out.println(<font color="red">"MD5(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"):"</font>+<br />                             m.getMD5ofStr(<font color="red">"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"</font>));<br /><font color="navy">}</font><br /><font color="navy"><b>else</b></font><br />                              System.out.println(<font color="red">"MD5("</font> + args[0] + <font color="red">")="</font> + m.getMD5ofStr(args[0]));<br /> <br /> <br /><font color="navy">}</font><br /> <br /><font color="navy">}</font></pre>
<img src ="http://www.blogjava.net/parable-myth/aggbug/74631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/parable-myth/" target="_blank">我心飞翔</a> 2006-10-11 17:25 <a href="http://www.blogjava.net/parable-myth/articles/74631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取网卡信息</title><link>http://www.blogjava.net/parable-myth/articles/74630.html</link><dc:creator>我心飞翔</dc:creator><author>我心飞翔</author><pubDate>Wed, 11 Oct 2006 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/parable-myth/articles/74630.html</guid><wfw:comment>http://www.blogjava.net/parable-myth/comments/74630.html</wfw:comment><comments>http://www.blogjava.net/parable-myth/articles/74630.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/parable-myth/comments/commentRss/74630.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/parable-myth/services/trackbacks/74630.html</trackback:ping><description><![CDATA[
		<pre>
				<font color="navy">
						<b>import</b>
				</font> java.net.*;<br /><font color="darkgreen">//...</font><br /> <br />        System.out.println(<font color="red">"\n+---------------------[ Network Cards ]----------------------+\n"</font>);<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>for</b></font>(Enumeration list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();)<br /><font color="navy">{</font><br />                NetworkInterface iFace = (NetworkInterface)list.nextElement();<br />                System.out.println(<font color="red">"Card:"</font> + iFace.getDisplayName());<br />                InetAddress adr;<br /><font color="navy"><b>for</b></font>(Enumeration addresses = iFace.getInetAddresses(); addresses.hasMoreElements(); System.out.println(<font color="red">" -&gt; "</font> + adr.getHostAddress()))<br />                    adr = (InetAddress)addresses.nextElement();<br /> <br /><font color="navy">}</font><br /> <br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(SocketException se)<br /><font color="navy">{</font><br />            System.out.println(<font color="red">"Failed discovering network cards!"</font>);<br />            System.out.println(<font color="red">"Error: "</font> + se);<br /><font color="navy">}</font></pre>
<img src ="http://www.blogjava.net/parable-myth/aggbug/74630.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/parable-myth/" target="_blank">我心飞翔</a> 2006-10-11 17:23 <a href="http://www.blogjava.net/parable-myth/articles/74630.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>时间显示操作类</title><link>http://www.blogjava.net/parable-myth/articles/74627.html</link><dc:creator>我心飞翔</dc:creator><author>我心飞翔</author><pubDate>Wed, 11 Oct 2006 09:15:00 GMT</pubDate><guid>http://www.blogjava.net/parable-myth/articles/74627.html</guid><wfw:comment>http://www.blogjava.net/parable-myth/comments/74627.html</wfw:comment><comments>http://www.blogjava.net/parable-myth/articles/74627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/parable-myth/comments/commentRss/74627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/parable-myth/services/trackbacks/74627.html</trackback:ping><description><![CDATA[
		<pre>
				<font color="navy">
						<b>package</b>
				</font> com.chinajavaworld.util;<br /> <br /><font color="navy"><b>import</b></font> java.text.ParseException;<br /><font color="navy"><b>import</b></font> java.text.SimpleDateFormat;<br /><font color="navy"><b>import</b></font> java.util.Calendar;<br /><font color="navy"><b>import</b></font> java.util.Date;<br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>class</b></font> DateTimeUtil<br /><font color="navy">{</font><br /> <br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> MAJOR_VERSION = 1;<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> MINOR_VERSION = 0;<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font><font color="navy"><b>int</b></font> REVISION_VERSION = 1;<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> String showFormat = <font color="red">"yyyy-MM-dd HH:mm:ss"</font>;<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> String storeFormat = <font color="red">"yyyyMMddHHmmssSSS"</font>;<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat showFormater = <font color="navy"><b>new</b></font> SimpleDateFormat(showFormat);<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat storeFormater = <font color="navy"><b>new</b></font> SimpleDateFormat(storeFormat);<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat formatter1 = <font color="navy"><b>new</b></font> SimpleDateFormat (<font color="red">"yyyy年MM月dd日 HH时mm分ss秒"</font>);<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat formatter2 = <font color="navy"><b>new</b></font> SimpleDateFormat (<font color="red">"yyyy年MM月dd日"</font>);<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat formatter3 = <font color="navy"><b>new</b></font> SimpleDateFormat (<font color="red">"yyyy-MM-dd HH:mm:ss"</font>);<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat formatter4 = <font color="navy"><b>new</b></font> SimpleDateFormat (<font color="red">"yyyy-MM-dd"</font>);<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat formatter5 = <font color="navy"><b>new</b></font> SimpleDateFormat (<font color="red">"yyyy/MM/dd"</font>);<br /><font color="navy"><b>private</b></font><font color="navy"><b>static</b></font><font color="navy"><b>final</b></font> SimpleDateFormat formatter6 = <font color="navy"><b>new</b></font> SimpleDateFormat (<font color="red">"MM-dd HH:mm"</font>);<br /> <br /><font color="navy"><b>public</b></font> DateTimeUtil()<br /><font color="navy">{</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getNow()<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> storeFormater.format(<font color="navy"><b>new</b></font> Date());<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getRelativeDate(<font color="navy"><b>int</b></font> days)<br /><font color="navy">{</font><br />        Calendar c = Calendar.getInstance();<br />        c.set(5, c.get(5) + days);<br />        StringBuffer sb = <font color="navy"><b>new</b></font> StringBuffer(17);<br />        sb.append(c.get(1));<br /><font color="navy"><b>int</b></font> tmp[] = <font color="navy">{</font><br />            c.get(2) + 1, c.get(5), c.get(11), c.get(12), c.get(13), c.get(14)<br /><font color="navy">}</font>;<br /><font color="navy"><b>for</b></font>(<font color="navy"><b>int</b></font> i = 0; i &lt; tmp.length - 1; i++)<br />            sb.append(tmp[i] &gt;= 10 ? <font color="red">""</font> : <font color="red">"0"</font>).append(tmp[i]);<br /> <br /><font color="navy"><b>if</b></font>(tmp[tmp.length - 1] &lt; 10)<br />            sb.append(<font color="red">"0"</font>);<br /><font color="navy"><b>if</b></font>(tmp[tmp.length - 1] &lt; 100)<br />            sb.append(<font color="red">"0"</font>);<br />        sb.append(tmp[tmp.length - 1]);<br /><font color="navy"><b>return</b></font> sb.toString();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getNow(String string)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> (<font color="navy"><b>new</b></font> SimpleDateFormat(string)).format(<font color="navy"><b>new</b></font> Date());<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getDisplayTime(<font color="navy"><b>long</b></font> time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> showFormater.format(<font color="navy"><b>new</b></font> Date(time));<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getDisplayTime(<font color="navy"><b>long</b></font> time, String string)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> (<font color="navy"><b>new</b></font> SimpleDateFormat(string)).format(<font color="navy"><b>new</b></font> Date(time));<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getShowFormat(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>if</b></font>(time == <font color="navy"><b>null</b></font> || time.equals(<font color="red">""</font>))<br />                time = showFormater.format(<font color="navy"><b>new</b></font> Date());<br /><font color="navy"><b>else</b></font><br />                time = showFormater.format(storeFormater.parse(time));<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(ParseException e)<br /><font color="navy">{</font><br />            e.printStackTrace();<br /><font color="navy">}</font><br /><font color="navy"><b>return</b></font> time;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>long</b></font> compare(String t1, String t2)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Long.valueOf(t1).longValue() - Long.valueOf(t2).longValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getYear(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Integer.valueOf(time.substring(0, 4)).intValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getMonth(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Integer.valueOf(time.substring(4, 6)).intValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getDate(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Integer.valueOf(time.substring(6, 8)).intValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getHour(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Integer.valueOf(time.substring(8, 10)).intValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getMinute(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Integer.valueOf(time.substring(10, 12)).intValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getSecond(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Integer.valueOf(time.substring(12, 14)).intValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getMilliSencond(String time)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> Integer.valueOf(time.substring(14, 17)).intValue();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>long</b></font> getTimeStamp(String time)<br /><font color="navy"><b>throws</b></font> ParseException<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> storeFormater.parse(time).getTime();<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String formatDate1(Date myDate) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> formatter1.format(myDate);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String formatDate2(Date myDate) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> formatter2.format(myDate);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String formatDate3(Date myDate) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> formatter3.format(myDate);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String formatDate4(Date myDate) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> formatter4.format(myDate);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String formatDate5(Date myDate) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> formatter5.format(myDate);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String formatDate6(Date myDate) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> formatter6.format(myDate);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>long</b></font> getLongTime(String time)<font color="navy">{</font><br /><font color="navy"><b>try</b></font><font color="navy">{</font><br /><font color="navy"><b>return</b></font> showFormater.parse(time).getTime();<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font> (ParseException ex) <font color="navy">{</font><br /><font color="navy"><b>return</b></font> 0L;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getVersion()<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font><font color="red">"1.0.1"</font>;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getMajor()<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> 1;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getMinor()<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> 0;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getRevision()<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> 1;<br /><font color="navy">}</font><br /> <br /><font color="navy">}</font></pre>
<img src ="http://www.blogjava.net/parable-myth/aggbug/74627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/parable-myth/" target="_blank">我心飞翔</a> 2006-10-11 17:15 <a href="http://www.blogjava.net/parable-myth/articles/74627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>request参数接收解析</title><link>http://www.blogjava.net/parable-myth/articles/74626.html</link><dc:creator>我心飞翔</dc:creator><author>我心飞翔</author><pubDate>Wed, 11 Oct 2006 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/parable-myth/articles/74626.html</guid><wfw:comment>http://www.blogjava.net/parable-myth/comments/74626.html</wfw:comment><comments>http://www.blogjava.net/parable-myth/articles/74626.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/parable-myth/comments/commentRss/74626.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/parable-myth/services/trackbacks/74626.html</trackback:ping><description><![CDATA[
		<pre>
				<font color="navy">
						<b>package</b>
				</font> com.chinajavaworld.util;<br /> <br /><font color="navy"><b>import</b></font> java.util.ArrayList;<br /><font color="navy"><b>import</b></font> java.util.List;<br /><font color="navy"><b>import</b></font> javax.servlet.http.HttpServletRequest;<br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>class</b></font> ParamUtils<br /><font color="navy">{</font><br /> <br /><font color="navy"><b>public</b></font> ParamUtils()<br /><font color="navy">{</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getParameter(HttpServletRequest request, String name)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> getParameter(request, name, <font color="navy"><b>false</b></font>);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getParameter(HttpServletRequest request, String name, String defaultValue)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> getParameter(request, name, defaultValue, <font color="navy"><b>false</b></font>);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getParameter(HttpServletRequest request, String name, <font color="navy"><b>boolean</b></font> emptyStringsOK)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> getParameter(request, name, null, emptyStringsOK);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getParameter(HttpServletRequest request, String name, String defaultValue, <font color="navy"><b>boolean</b></font> emptyStringsOK)<br /><font color="navy">{</font><br />        String temp = request.getParameter(name);<br /><font color="navy"><b>if</b></font>(temp != <font color="navy"><b>null</b></font>)<br /><font color="navy">{</font><br /><font color="navy"><b>if</b></font>(temp.equals(<font color="red">""</font>) &amp;&amp; !emptyStringsOK)<br /><font color="navy"><b>return</b></font> defaultValue;<br /><font color="navy"><b>else</b></font><br /><font color="navy"><b>return</b></font> temp;<br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> defaultValue;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String[] getParameters(HttpServletRequest request, String name)<br /><font color="navy">{</font><br /><font color="navy"><b>if</b></font>(name == <font color="navy"><b>null</b></font>)<br /><font color="navy"><b>return</b></font><font color="navy"><b>new</b></font> String[0];<br />        String paramValues[] = request.getParameterValues(name);<br /><font color="navy"><b>if</b></font>(paramValues == <font color="navy"><b>null</b></font> || paramValues.length == 0)<br /><font color="navy"><b>return</b></font><font color="navy"><b>new</b></font> String[0];<br />        List values = <font color="navy"><b>new</b></font> ArrayList(paramValues.length);<br /><font color="navy"><b>for</b></font>(<font color="navy"><b>int</b></font> i = 0; i &lt; paramValues.length; i++)<br /><font color="navy"><b>if</b></font>(paramValues[i] != <font color="navy"><b>null</b></font> &amp;&amp; !<font color="red">""</font>.equals(paramValues[i]))<br />                values.add(paramValues[i]);<br /> <br /><font color="navy"><b>return</b></font> (String[])values.toArray(<font color="navy"><b>new</b></font> String[0]);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>boolean</b></font> getBooleanParameter(HttpServletRequest request, String name)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> getBooleanParameter(request, name, <font color="navy"><b>false</b></font>);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>boolean</b></font> getBooleanParameter(HttpServletRequest request, String name, <font color="navy"><b>boolean</b></font> defaultVal)<br /><font color="navy">{</font><br />        String temp = request.getParameter(name);<br /><font color="navy"><b>if</b></font>(<font color="red">"true"</font>.equals(temp) || <font color="red">"on"</font>.equals(temp))<br /><font color="navy"><b>return</b></font><font color="navy"><b>true</b></font>;<br /><font color="navy"><b>if</b></font>(<font color="red">"false"</font>.equals(temp) || <font color="red">"off"</font>.equals(temp))<br /><font color="navy"><b>return</b></font><font color="navy"><b>false</b></font>;<br /><font color="navy"><b>else</b></font><br /><font color="navy"><b>return</b></font> defaultVal;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getIntParameter(HttpServletRequest request, String name, <font color="navy"><b>int</b></font> defaultNum)<br /><font color="navy">{</font><br />        String temp = request.getParameter(name);<br /><font color="navy"><b>if</b></font>(temp != <font color="navy"><b>null</b></font> &amp;&amp; !temp.equals(<font color="red">""</font>))<br /><font color="navy">{</font><br /><font color="navy"><b>int</b></font> num = defaultNum;<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br />                num = Integer.parseInt(temp.trim());<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(Exception ignored) <font color="navy">{</font><font color="navy">}</font><br /><font color="navy"><b>return</b></font> num;<br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> defaultNum;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font>[] getIntParameters(HttpServletRequest request, String name, <font color="navy"><b>int</b></font> defaultNum)<br /><font color="navy">{</font><br />        String paramValues[] = request.getParameterValues(name);<br /><font color="navy"><b>if</b></font>(paramValues == <font color="navy"><b>null</b></font> || paramValues.length == 0)<br /><font color="navy"><b>return</b></font><font color="navy"><b>new</b></font><font color="navy"><b>int</b></font>[0];<br /><font color="navy"><b>int</b></font> values[] = <font color="navy"><b>new</b></font><font color="navy"><b>int</b></font>[paramValues.length];<br /><font color="navy"><b>for</b></font>(<font color="navy"><b>int</b></font> i = 0; i &lt; paramValues.length; i++)<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br />                values[i] = Integer.parseInt(paramValues[i].trim());<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(Exception e)<br /><font color="navy">{</font><br />                values[i] = defaultNum;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>return</b></font> values;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>double</b></font> getDoubleParameter(HttpServletRequest request, String name, <font color="navy"><b>double</b></font> defaultNum)<br /><font color="navy">{</font><br />        String temp = request.getParameter(name);<br /><font color="navy"><b>if</b></font>(temp != <font color="navy"><b>null</b></font> &amp;&amp; !temp.equals(<font color="red">""</font>))<br /><font color="navy">{</font><br /><font color="navy"><b>double</b></font> num = defaultNum;<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br />                num = Double.parseDouble(temp.trim());<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(Exception ignored) <font color="navy">{</font><font color="navy">}</font><br /><font color="navy"><b>return</b></font> num;<br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> defaultNum;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>long</b></font> getLongParameter(HttpServletRequest request, String name, <font color="navy"><b>long</b></font> defaultNum)<br /><font color="navy">{</font><br />        String temp = request.getParameter(name);<br /><font color="navy"><b>if</b></font>(temp != <font color="navy"><b>null</b></font> &amp;&amp; !temp.equals(<font color="red">""</font>))<br /><font color="navy">{</font><br /><font color="navy"><b>long</b></font> num = defaultNum;<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br />                num = Long.parseLong(temp.trim());<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(Exception ignored) <font color="navy">{</font><font color="navy">}</font><br /><font color="navy"><b>return</b></font> num;<br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> defaultNum;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>long</b></font>[] getLongParameters(HttpServletRequest request, String name, <font color="navy"><b>long</b></font> defaultNum)<br /><font color="navy">{</font><br />        String paramValues[] = request.getParameterValues(name);<br /><font color="navy"><b>if</b></font>(paramValues == <font color="navy"><b>null</b></font> || paramValues.length == 0)<br /><font color="navy"><b>return</b></font><font color="navy"><b>new</b></font><font color="navy"><b>long</b></font>[0];<br /><font color="navy"><b>long</b></font> values[] = <font color="navy"><b>new</b></font><font color="navy"><b>long</b></font>[paramValues.length];<br /><font color="navy"><b>for</b></font>(<font color="navy"><b>int</b></font> i = 0; i &lt; paramValues.length; i++)<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br />                values[i] = Long.parseLong(paramValues[i].trim());<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(Exception e)<br /><font color="navy">{</font><br />                values[i] = defaultNum;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>return</b></font> values;<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getAttribute(HttpServletRequest request, String name)<br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> getAttribute(request, name, <font color="navy"><b>false</b></font>);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font> String getAttribute(HttpServletRequest request, String name, <font color="navy"><b>boolean</b></font> emptyStringsOK)<br /><font color="navy">{</font><br />        String temp = (String)request.getAttribute(name);<br /><font color="navy"><b>if</b></font>(temp != <font color="navy"><b>null</b></font>)<br /><font color="navy">{</font><br /><font color="navy"><b>if</b></font>(temp.equals(<font color="red">""</font>) &amp;&amp; !emptyStringsOK)<br /><font color="navy"><b>return</b></font><font color="navy"><b>null</b></font>;<br /><font color="navy"><b>else</b></font><br /><font color="navy"><b>return</b></font> temp;<br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font><font color="navy"><b>null</b></font>;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>boolean</b></font> getBooleanAttribute(HttpServletRequest request, String name)<br /><font color="navy">{</font><br />        String temp = (String)request.getAttribute(name);<br /><font color="navy"><b>return</b></font> temp != <font color="navy"><b>null</b></font> &amp;&amp; temp.equals(<font color="red">"true"</font>);<br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>int</b></font> getIntAttribute(HttpServletRequest request, String name, <font color="navy"><b>int</b></font> defaultNum)<br /><font color="navy">{</font><br />        String temp = (String)request.getAttribute(name);<br /><font color="navy"><b>if</b></font>(temp != <font color="navy"><b>null</b></font> &amp;&amp; !temp.equals(<font color="red">""</font>))<br /><font color="navy">{</font><br /><font color="navy"><b>int</b></font> num = defaultNum;<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br />                num = Integer.parseInt(temp.trim());<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(Exception ignored) <font color="navy">{</font><font color="navy">}</font><br /><font color="navy"><b>return</b></font> num;<br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> defaultNum;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /> <br /><font color="navy"><b>public</b></font><font color="navy"><b>static</b></font><font color="navy"><b>long</b></font> getLongAttribute(HttpServletRequest request, String name, <font color="navy"><b>long</b></font> defaultNum)<br /><font color="navy">{</font><br />        String temp = (String)request.getAttribute(name);<br /><font color="navy"><b>if</b></font>(temp != <font color="navy"><b>null</b></font> &amp;&amp; !temp.equals(<font color="red">""</font>))<br /><font color="navy">{</font><br /><font color="navy"><b>long</b></font> num = defaultNum;<br /><font color="navy"><b>try</b></font><br /><font color="navy">{</font><br />                num = Long.parseLong(temp.trim());<br /><font color="navy">}</font><br /><font color="navy"><b>catch</b></font>(Exception ignored) <font color="navy">{</font><font color="navy">}</font><br /><font color="navy"><b>return</b></font> num;<br /><font color="navy">}</font><font color="navy"><b>else</b></font><br /><font color="navy">{</font><br /><font color="navy"><b>return</b></font> defaultNum;<br /><font color="navy">}</font><br /><font color="navy">}</font><br /><font color="navy">}</font></pre>
<img src ="http://www.blogjava.net/parable-myth/aggbug/74626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/parable-myth/" target="_blank">我心飞翔</a> 2006-10-11 17:13 <a href="http://www.blogjava.net/parable-myth/articles/74626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符串处理等常用方法    </title><link>http://www.blogjava.net/parable-myth/articles/74624.html</link><dc:creator>我心飞翔</dc:creator><author>我心飞翔</author><pubDate>Wed, 11 Oct 2006 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/parable-myth/articles/74624.html</guid><wfw:comment>http://www.blogjava.net/parable-myth/comments/74624.html</wfw:comment><comments>http://www.blogjava.net/parable-myth/articles/74624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/parable-myth/comments/commentRss/74624.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/parable-myth/services/trackbacks/74624.html</trackback:ping><description><![CDATA[
		<p>package com.chinajavaworld.util;<br /> <br />import java.io.UnsupportedEncodingException;<br />import java.security.MessageDigest;<br />import java.security.NoSuchAlgorithmException;<br />import java.text.BreakIterator;<br />import java.util.*;<br />import java.util.regex.Matcher;<br />import java.util.regex.Pattern;<br />import java.io.File;<br /> <br />public class StringUtils<br />{<br />  private final static String BR_TAG = "&lt;BR&gt;";<br /> <br />    private StringUtils()<br />    {<br />    }<br /> <br />    /**<br />     * This method takes a string which may contain newline characters<br />     * '\n' which it converts to html newline tags.<br />     *<br />     * @param input The text to be converted.<br />     * @return The input string with the newline character '\n' replaced<br />     * with &lt;br&gt;.<br />     */<br />    public static final String convertNewlines(String input) {<br />      return replace(replace(input, "\r\n", BR_TAG), "\n", BR_TAG);<br />    }<br /> <br />    public static final String backConvertNewlines(String input) {<br />      return replaceIgnoreCase(input, BR_TAG, "\n");<br />    }<br /> <br /> <br />    public static final String replace(String string, String oldString, String newString)<br />    {<br />        if(string == null)<br />            return null;<br />        if(newString == null)<br />            return string;<br />        int i = 0;<br />        if((i = string.indexOf(oldString, i)) &gt;= 0)<br />        {<br />            char string2[] = string.toCharArray();<br />            char newString2[] = newString.toCharArray();<br />            int oLength = oldString.length();<br />            StringBuffer buf = new StringBuffer(string2.length);<br />            buf.append(string2, 0, i).append(newString2);<br />            i += oLength;<br />            int j;<br />            for(j = i; (i = string.indexOf(oldString, i)) &gt; 0; j = i)<br />            {<br />                buf.append(string2, j, i - j).append(newString2);<br />                i += oLength;<br />            }<br /> <br />            buf.append(string2, j, string2.length - j);<br />            return buf.toString();<br />        } else<br />        {<br />            return string;<br />        }<br />    }<br /> <br />    public static final String replaceIgnoreCase(String line, String oldString, String newString)<br />    {<br />        if(line == null)<br />            return null;<br />        String lcLine = line.toLowerCase();<br />        String lcOldString = oldString.toLowerCase();<br />        int i = 0;<br />        if((i = lcLine.indexOf(lcOldString, i)) &gt;= 0)<br />        {<br />            char line2[] = line.toCharArray();<br />            char newString2[] = newString.toCharArray();<br />            int oLength = oldString.length();<br />            StringBuffer buf = new StringBuffer(line2.length);<br />            buf.append(line2, 0, i).append(newString2);<br />            i += oLength;<br />            int j;<br />            for(j = i; (i = lcLine.indexOf(lcOldString, i)) &gt; 0; j = i)<br />            {<br />                buf.append(line2, j, i - j).append(newString2);<br />                i += oLength;<br />            }<br /> <br />            buf.append(line2, j, line2.length - j);<br />            return buf.toString();<br />        } else<br />        {<br />            return line;<br />        }<br />    }<br /> <br />    public static final String replaceIgnoreCase(String line, String oldString, String newString, int count[])<br />    {<br />        if(line == null)<br />            return null;<br />        String lcLine = line.toLowerCase();<br />        String lcOldString = oldString.toLowerCase();<br />        int i = 0;<br />        if((i = lcLine.indexOf(lcOldString, i)) &gt;= 0)<br />        {<br />            int counter = 1;<br />            char line2[] = line.toCharArray();<br />            char newString2[] = newString.toCharArray();<br />            int oLength = oldString.length();<br />            StringBuffer buf = new StringBuffer(line2.length);<br />            buf.append(line2, 0, i).append(newString2);<br />            i += oLength;<br />            int j;<br />            for(j = i; (i = lcLine.indexOf(lcOldString, i)) &gt; 0; j = i)<br />            {<br />                counter++;<br />                buf.append(line2, j, i - j).append(newString2);<br />                i += oLength;<br />            }<br /> <br />            buf.append(line2, j, line2.length - j);<br />            count[0] = counter;<br />            return buf.toString();<br />        } else<br />        {<br />            return line;<br />        }<br />    }<br /> <br />    public static final String replace(String line, String oldString, String newString, int count[])<br />    {<br />        if(line == null)<br />            return null;<br />        int i = 0;<br />        if((i = line.indexOf(oldString, i)) &gt;= 0)<br />        {<br />            int counter = 1;<br />            char line2[] = line.toCharArray();<br />            char newString2[] = newString.toCharArray();<br />            int oLength = oldString.length();<br />            StringBuffer buf = new StringBuffer(line2.length);<br />            buf.append(line2, 0, i).append(newString2);<br />            i += oLength;<br />            int j;<br />            for(j = i; (i = line.indexOf(oldString, i)) &gt; 0; j = i)<br />            {<br />                counter++;<br />                buf.append(line2, j, i - j).append(newString2);<br />                i += oLength;<br />            }<br /> <br />            buf.append(line2, j, line2.length - j);<br />            count[0] = counter;<br />            return buf.toString();<br />        } else<br />        {<br />            return line;<br />        }<br />    }<br /> <br />    public static final boolean hasBadwordsIgnoreCase(String line, String oldString)<br />    {<br />        if(line == null)<br />            return false;<br />        String lcLine = line.toLowerCase();<br />        String lcOldString = oldString.toLowerCase();<br />        int i = 0;<br />        if((i = lcLine.indexOf(lcOldString, i)) &gt;= 0)<br />        {<br />            return true;<br />        } else<br />        {<br />            return false;<br />        }<br />    }<br /> <br />    public static final String stripTags(String in)<br />    {<br />        if(in == null)<br />            return null;<br />        else<br />            return stripTags(in, false);<br />    }<br /> <br />    public static final String stripTags(String in, boolean stripBRTag)<br />    {<br />        if(in == null)<br />            return null;<br />        int i = 0;<br />        int last = 0;<br />        char input[] = in.toCharArray();<br />        int len = input.length;<br />        StringBuffer out = new StringBuffer((int)((double)len * 1.3D));<br />        for(; i &lt; len; i++)<br />        {<br />            char ch = input[i];<br />            if(ch &gt; '&gt;')<br />                continue;<br />            if(ch == '&lt;')<br />            {<br />                if(!stripBRTag &amp;&amp; i + 3 &lt; len &amp;&amp; input[i + 1] == 'b' &amp;&amp; input[i + 2] == 'r' &amp;&amp; input[i + 3] == '&gt;')<br />                {<br />                    i += 3;<br />                    continue;<br />                }<br />                if(i &gt; last)<br />                {<br />                    if(last &gt; 0)<br />                        out.append(" ");<br />                    out.append(input, last, i - last);<br />                }<br />                last = i + 1;<br />                continue;<br />            }<br />            if(ch == '&gt;')<br />                last = i + 1;<br />        }<br /> <br />        if(last == 0)<br />            return in;<br />        if(i &gt; last)<br />            out.append(input, last, i - last);<br />        return out.toString();<br />    }<br /> <br />    public static final String escapeHTMLTags(String in)<br />    {<br />        if(in == null)<br />            return null;<br />        int i = 0;<br />        int last = 0;<br />        char input[] = in.toCharArray();<br />        int len = input.length;<br />        StringBuffer out = new StringBuffer((int)((double)len * 1.3D));<br />        for(; i &lt; len; i++)<br />        {<br />            char ch = input[i];<br />            if(ch &gt; '&gt;')<br />                continue;<br />            if(ch == '&lt;')<br />            {<br />                if(i &gt; last)<br />                    out.append(input, last, i - last);<br />                last = i + 1;<br />                out.append(LT_ENCODE);<br />                continue;<br />            }<br />            if(ch == '&gt;')<br />            {<br />                if(i &gt; last)<br />                    out.append(input, last, i - last);<br />                last = i + 1;<br />                out.append(GT_ENCODE);<br />                continue;<br />            }<br />            if(ch != '"')<br />                continue;<br />            if(i &gt; last)<br />                out.append(input, last, i - last);<br />            last = i + 1;<br />            out.append(QUOTE_ENCODE);<br />        }<br /> <br />        if(last == 0)<br />            return in;<br />        if(i &gt; last)<br />            out.append(input, last, i - last);<br />        return out.toString();<br />    }<br /> <br />    public static final synchronized String hash(String data)<br />    {<br />        if(digest == null)<br />            try<br />            {<br />                digest = MessageDigest.getInstance("MD5");<br />            }<br />            catch(NoSuchAlgorithmException nsae)<br />            {<br />                //Log.error(e);<br />            }<br />        try<br />        {<br />            digest.update(data.getBytes("utf-8"));<br />        }<br />        catch(UnsupportedEncodingException e)<br />        {<br />            //Log.error(e);<br />        }<br />        return encodeHex(digest.digest());<br />    }<br /> <br />    public static final String encodeHex(byte bytes[])<br />    {<br />        StringBuffer buf = new StringBuffer(bytes.length * 2);<br />        for(int i = 0; i &lt; bytes.length; i++)<br />        {<br />            if((bytes[i] &amp; 0xff) &lt; 16)<br />                buf.append("0");<br />            buf.append(Long.toString(bytes[i] &amp; 0xff, 16));<br />        }<br /> <br />        return buf.toString();<br />    }<br /> <br />    public static final byte[] decodeHex(String hex)<br />    {<br />        char chars[] = hex.toCharArray();<br />        byte bytes[] = new byte[chars.length / 2];<br />        int byteCount = 0;<br />        for(int i = 0; i &lt; chars.length; i += 2)<br />        {<br />            int newByte = 0;<br />            newByte |= hexCharToByte(chars[i]);<br />            newByte &lt;&lt;= 4;<br />            newByte |= hexCharToByte(chars[i + 1]);<br />            bytes[byteCount] = (byte)newByte;<br />            byteCount++;<br />        }<br /> <br />        return bytes;<br />    }<br /> <br />    private static final byte hexCharToByte(char ch)<br />    {<br />        switch(ch)<br />        {<br />        case 48: // '0'<br />            return 0;<br /> <br />        case 49: // '1'<br />            return 1;<br /> <br />        case 50: // '2'<br />            return 2;<br /> <br />        case 51: // '3'<br />            return 3;<br /> <br />        case 52: // '4'<br />            return 4;<br /> <br />        case 53: // '5'<br />            return 5;<br /> <br />        case 54: // '6'<br />            return 6;<br /> <br />        case 55: // '7'<br />            return 7;<br /> <br />        case 56: // '8'<br />            return 8;<br /> <br />        case 57: // '9'<br />            return 9;<br /> <br />        case 97: // 'a'<br />            return 10;<br /> <br />        case 98: // 'b'<br />            return 11;<br /> <br />        case 99: // 'c'<br />            return 12;<br /> <br />        case 100: // 'd'<br />            return 13;<br /> <br />        case 101: // 'e'<br />            return 14;<br /> <br />        case 102: // 'f'<br />            return 15;<br /> <br />        case 58: // ':'<br />        case 59: // ';'<br />        case 60: // '&lt;'<br />        case 61: // '='<br />        case 62: // '&gt;'<br />        case 63: // '?'<br />        case 64: // '@'<br />        case 65: // 'A'<br />        case 66: // 'B'<br />        case 67: // 'C'<br />        case 68: // 'D'<br />        case 69: // 'E'<br />        case 70: // 'F'<br />        case 71: // 'G'<br />        case 72: // 'H'<br />        case 73: // 'I'<br />        case 74: // 'J'<br />        case 75: // 'K'<br />        case 76: // 'L'<br />        case 77: // 'M'<br />        case 78: // 'N'<br />        case 79: // 'O'<br />        case 80: // 'P'<br />        case 81: // 'Q'<br />        case 82: // 'R'<br />        case 83: // 'S'<br />        case 84: // 'T'<br />        case 85: // 'U'<br />        case 86: // 'V'<br />        case 87: // 'W'<br />        case 88: // 'X'<br />        case 89: // 'Y'<br />        case 90: // 'Z'<br />        case 91: // '['<br />        case 92: // '\\'<br />        case 93: // ']'<br />        case 94: // '^'<br />        case 95: // '_'<br />        case 96: // '`'<br />        default:<br />            return 0;<br />        }<br />    }<br /> <br />    public static String encodeBase64(String data)<br />    {<br />        byte bytes[] = null;<br />        try<br />        {<br />            bytes = data.getBytes("UTF-8");<br />        }<br />        catch(UnsupportedEncodingException uee)<br />        {<br />            //Log.error(uee);<br />        }<br />        return encodeBase64(bytes);<br />    }<br /> <br />    public static String decodeBase64(String data)<br />    {<br />        byte[] bytes = null;<br />        try {<br />          bytes = data.getBytes("UTF-8");<br />          return new String(decodeBase64(bytes), "UTF-8");<br />        }<br />        catch (UnsupportedEncodingException ex) {<br />        }<br />        return "";<br />    }<br /> <br />    public static String encodeBase64(byte data[])<br />    {<br />        boolean lineSep = false;<br />        int sLen = data == null ? 0 : data.length;<br />        if(sLen == 0)<br />            return new String("");<br />        int eLen = (sLen / 3) * 3;<br />        int cCnt = (sLen - 1) / 3 + 1 &lt;&lt; 2;<br />        int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 &lt;&lt; 1 : 0);<br />        char dArr[] = new char[dLen];<br />        int s = 0;<br />        int d = 0;<br />        int cc = 0;<br />        do<br />        {<br />            if(s &gt;= eLen)<br />                break;<br />            int i = (data[s++] &amp; 0xff) &lt;&lt; 16 | (data[s++] &amp; 0xff) &lt;&lt; 8 | data[s++] &amp; 0xff;<br />            dArr[d++] = CA[i &gt;&gt;&gt; 18 &amp; 0x3f];<br />            dArr[d++] = CA[i &gt;&gt;&gt; 12 &amp; 0x3f];<br />            dArr[d++] = CA[i &gt;&gt;&gt; 6 &amp; 0x3f];<br />            dArr[d++] = CA[i &amp; 0x3f];<br />            if(lineSep &amp;&amp; ++cc == 19 &amp;&amp; d &lt; dLen - 2)<br />            {<br />                dArr[d++] = '\r';<br />                dArr[d++] = '\n';<br />                cc = 0;<br />            }<br />        } while(true);<br />        int left = sLen - eLen;<br />        if(left &gt; 0)<br />        {<br />            int i = (data[eLen] &amp; 0xff) &lt;&lt; 10 | (left != 2 ? 0 : (data[sLen - 1] &amp; 0xff) &lt;&lt; 2);<br />            dArr[dLen - 4] = CA[i &gt;&gt; 12];<br />            dArr[dLen - 3] = CA[i &gt;&gt;&gt; 6 &amp; 0x3f];<br />            dArr[dLen - 2] = left != 2 ? '=' : CA[i &amp; 0x3f];<br />            dArr[dLen - 1] = '=';<br />        }<br />        return new String(dArr);<br />    }<br /> <br />    public static final byte[] decodeBase64(byte bytes[])<br />    {<br />        int sLen = bytes.length;<br />        int sepCnt = 0;<br />        for(int i = 0; i &lt; sLen; i++)<br />            if(IA[bytes[i] &amp; 0xff] &lt; 0)<br />                sepCnt++;<br /> <br />        if((sLen - sepCnt) % 4 != 0)<br />            return null;<br />        int pad = 0;<br />        int i = sLen;<br />        do<br />        {<br />            if(i &lt;= 1 || IA[bytes[--i] &amp; 0xff] &gt; 0)<br />                break;<br />            if(bytes[i] == 61)<br />                pad++;<br />        } while(true);<br />        int len = ((sLen - sepCnt) * 6 &gt;&gt; 3) - pad;<br />        byte dArr[] = new byte[len];<br />        int s = 0;<br />        int d = 0;<br />        do<br />        {<br />            if(d &gt;= len)<br />                break;<br />            i = 0;<br />            for(int j = 0; j &lt; 4; j++)<br />            {<br />                int c = IA[bytes[s++] &amp; 0xff];<br />                if(c &gt;= 0)<br />                    i |= c &lt;&lt; 18 - j * 6;<br />                else<br />                    j--;<br />            }<br /> <br />            dArr[d++] = (byte)(i &gt;&gt; 16);<br />            if(d &lt; len)<br />            {<br />                dArr[d++] = (byte)(i &gt;&gt; 8);<br />                if(d &lt; len)<br />                    dArr[d++] = (byte)i;<br />            }<br />        } while(true);<br />        return dArr;<br />    }<br /> <br />    public static String URLEncode(String original, String charset)<br />        throws UnsupportedEncodingException<br />    {<br />        if(original == null)<br />            return null;<br />        byte octets[];<br />        try<br />        {<br />            octets = original.getBytes(charset);<br />        }<br />        catch(UnsupportedEncodingException error)<br />        {<br />            throw new UnsupportedEncodingException();<br />        }<br />        StringBuffer buf = new StringBuffer(octets.length);<br />        for(int i = 0; i &lt; octets.length; i++)<br />        {<br />            char c = (char)octets[i];<br />            if(allowed_query.get(c))<br />            {<br />                buf.append(c);<br />            } else<br />            {<br />                buf.append('%');<br />                byte b = octets[i];<br />                char hexadecimal = Character.forDigit(b &gt;&gt; 4 &amp; 0xf, 16);<br />                buf.append(Character.toUpperCase(hexadecimal));<br />                hexadecimal = Character.forDigit(b &amp; 0xf, 16);<br />                buf.append(Character.toUpperCase(hexadecimal));<br />            }<br />        }<br /> <br />        return buf.toString();<br />    }<br /> <br />    public static final String[] toLowerCaseWordArray(String text)<br />    {<br />        if(text == null || text.length() == 0)<br />            return new String[0];<br />        ArrayList wordList = new ArrayList();<br />        BreakIterator boundary = BreakIterator.getWordInstance();<br />        boundary.setText(text);<br />        int start = 0;<br />        for(int end = boundary.next(); end != -1; end = boundary.next())<br />        {<br />            String tmp = text.substring(start, end).trim();<br />            tmp = replace(tmp, "+", "");<br />            tmp = replace(tmp, "/", "");<br />            tmp = replace(tmp, "\\", "");<br />            tmp = replace(tmp, "#", "");<br />            tmp = replace(tmp, "*", "");<br />            tmp = replace(tmp, ")", "");<br />            tmp = replace(tmp, "(", "");<br />            tmp = replace(tmp, "&amp;", "");<br />            if(tmp.length() &gt; 0)<br />                wordList.add(tmp);<br />            start = end;<br />        }<br /> <br />        return (String[])wordList.toArray(new String[wordList.size()]);<br />    }<br /> <br />    public static final String randomString(int length)<br />    {<br />        if(length &lt; 1)<br />            return null;<br />        char randBuffer[] = new char[length];<br />        for(int i = 0; i &lt; randBuffer.length; i++)<br />            randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];<br /> <br />        return new String(randBuffer);<br />    }<br /> <br />    public static final int randomInt(int number)<br />    {<br />        if(number&gt;0)<br />            return randGen.nextInt(number)+1;<br />        else<br />            return 1;<br />    }<br /> <br />    public static final String chop(String string, int length)<br />    {<br />        if(string == null)<br />            return null;<br />        if(length &lt;= 0)<br />            throw new IllegalArgumentException("Length must be &gt; 0");<br />        if(string.length() &lt;= length + 2)<br />        {<br />            return string;<br />        } else<br />        {<br />            StringBuffer buf = new StringBuffer(string.substring(0, length));<br />            buf.append("...");<br />            return buf.toString();<br />        }<br />    }<br /> <br />    public static final String chopAtWord(String string, int length, int minLength)<br />    {<br />        if(length &lt; 2)<br />            throw new IllegalArgumentException("Length specified (" + length + ") must be &gt; 2");<br />        if(minLength &gt;= length)<br />            throw new IllegalArgumentException("minLength must be smaller than length");<br />        int sLength = string != null ? string.length() : -1;<br />        if(sLength &lt; 1)<br />            return string;<br />        if(minLength != -1 &amp;&amp; sLength &lt; minLength)<br />            return string;<br />        if(minLength == -1 &amp;&amp; sLength &lt; length)<br />            return string;<br />        char charArray[] = string.toCharArray();<br />        if(sLength &gt; length)<br />        {<br />            sLength = length;<br />            for(int i = 0; i &lt; sLength - 1; i++)<br />            {<br />                if(charArray[i] == '\r' &amp;&amp; charArray[i + 1] == '\n')<br />                    return string.substring(0, i + 1);<br />                if(charArray[i] == '\n')<br />                    return string.substring(0, i);<br />            }<br /> <br />            if(charArray[sLength - 1] == '\n')<br />                return string.substring(0, sLength - 1);<br />            for(int i = sLength - 1; i &gt; 0; i--)<br />                if(charArray[i] == ' ')<br />                    return string.substring(0, i).trim();<br /> <br />        } else<br />        if(minLength != -1 &amp;&amp; sLength &gt; minLength)<br />        {<br />            for(int i = 0; i &lt; minLength; i++)<br />                if(charArray[i] == ' ')<br />                    return string;<br /> <br />        }<br />        if(minLength &gt; -1 &amp;&amp; minLength &lt;= string.length())<br />            return string.substring(0, minLength);<br />        else<br />            return string.substring(0, length);<br />    }<br /> <br />    public static final String chopAtWord(String string, int length)<br />    {<br />        return chopAtWord(string, length, -1);<br />    }<br /> <br />    public static String chopAtWordsAround(String input, String wordList[], int numChars)<br />    {<br />        if(input == null || "".equals(input.trim()) || wordList == null || wordList.length == 0 || numChars == 0)<br />            return "";<br />        String lc = input.toLowerCase();<br />        for(int i = 0; i &lt; wordList.length; i++)<br />        {<br />            int pos = lc.indexOf(wordList[i]);<br />            if(pos &gt; -1)<br />            {<br />                int beginIdx = pos - numChars;<br />                if(beginIdx &lt; 0)<br />                    beginIdx = 0;<br />                int endIdx = pos + numChars;<br />                if(endIdx &gt; input.length() - 1)<br />                    endIdx = input.length() - 1;<br />                char chars[];<br />                for(chars = input.toCharArray(); beginIdx &gt; 0 &amp;&amp; chars[beginIdx] != ' ' &amp;&amp; chars[beginIdx] != '\n' &amp;&amp; chars[beginIdx] != '\r'; beginIdx--);<br />                for(; endIdx &lt; input.length() &amp;&amp; chars[endIdx] != ' ' &amp;&amp; chars[endIdx] != '\n' &amp;&amp; chars[endIdx] != '\r'; endIdx++);<br />                return input.substring(beginIdx, endIdx);<br />            }<br />        }<br /> <br />        return input.substring(0, input.length() &lt; 200 ? input.length() : 200);<br />    }<br /> <br />    public static final String highlightWords(String string, String words[], String startHighlight, String endHighlight)<br />    {<br />        if(string == null || words == null || startHighlight == null || endHighlight == null)<br />            return null;<br />        StringBuffer regexp = new StringBuffer();<br />        regexp.append("(?i)\\b(");<br />        for(int x = 0; x &lt; words.length; x++)<br />        {<br />            words[x] = words[x].replaceAll("([\\$\\?\\|\\/\\.])", "\\\\$1");<br />            regexp.append(words[x]);<br />            if(x != words.length - 1)<br />                regexp.append("|");<br />        }<br /> <br />        regexp.append(")");<br />        return string.replaceAll(regexp.toString(), startHighlight + "$1" + endHighlight);<br />    }<br /> <br />    public static final String escapeForSQL(String string)<br />    {<br />        if(string == null)<br />            return null;<br />        if(string.length() == 0)<br />            return string;<br />        char input[] = string.toCharArray();<br />        int i = 0;<br />        int last = 0;<br />        int len = input.length;<br />        StringBuffer out = null;<br />        for(; i &lt; len; i++)<br />        {<br />            char ch = input[i];<br />            if(ch != '\'')<br />                continue;<br />            if(out == null)<br />                out = new StringBuffer(len + 2);<br />            if(i &gt; last)<br />                out.append(input, last, i - last);<br />            last = i + 1;<br />            out.append('\'').append('\'');<br />        }<br /> <br />        if(out == null)<br />            return string;<br />        if(i &gt; last)<br />            out.append(input, last, i - last);<br />        return out.toString();<br />    }<br /> <br />    public static final String escapeForXML(String string)<br />    {<br />        if(string == null)<br />            return null;<br />        int i = 0;<br />        int last = 0;<br />        char input[] = string.toCharArray();<br />        int len = input.length;<br />        StringBuffer out = new StringBuffer((int)((double)len * 1.3D));<br />        for(; i &lt; len; i++)<br />        {<br />            char ch = input[i];<br />            if(ch &gt; '&gt;')<br />                continue;<br />            if(ch == '&lt;')<br />            {<br />                if(i &gt; last)<br />                    out.append(input, last, i - last);<br />                last = i + 1;<br />                out.append(LT_ENCODE);<br />                continue;<br />            }<br />            if(ch == '&gt;')<br />            {<br />                if(i &gt; last)<br />                    out.append(input, last, i - last);<br />                last = i + 1;<br />                out.append(GT_ENCODE);<br />                continue;<br />            }<br />            if(ch == '&amp;')<br />            {<br />                if(i &gt; last)<br />                    out.append(input, last, i - last);<br />                last = i + 1;<br />                out.append(AMP_ENCODE);<br />                continue;<br />            }<br />            if(ch == '"')<br />            {<br />                if(i &gt; last)<br />                    out.append(input, last, i - last);<br />                last = i + 1;<br />                out.append(QUOTE_ENCODE);<br />                continue;<br />            }<br />            if(ch == '\n' || ch == '\r' || ch == '\t' || ch &gt;= ' ')<br />                continue;<br />            if(i &gt; last)<br />                out.append(input, last, i - last);<br />            last = i + 1;<br />        }<br /> <br />        if(last == 0)<br />            return string;<br />        if(i &gt; last)<br />            out.append(input, last, i - last);<br />        return out.toString();<br />    }<br /> <br />    public static final String unescapeFromXML(String string)<br />    {<br />        string = replace(string, "&lt;", "&lt;");<br />        string = replace(string, "&gt;", "&gt;");<br />        string = replace(string, """, "\"");<br />        return replace(string, "&amp;", "&amp;");<br />    }<br /> <br />    public static final String zeroPadString(String string, int length)<br />    {<br />        if(string == null || string.length() &gt; length)<br />        {<br />            return string;<br />        } else<br />        {<br />            StringBuffer buf = new StringBuffer(length);<br />            buf.append(zeroArray, 0, length - string.length()).append(string);<br />            return buf.toString();<br />        }<br />    }<br /> <br />    public static final String Encode(String input,String encode){<br />      if(input==null || "".equals(input)) return input;<br />      try {<br />        return new String(input.getBytes("iso-8859-1"), encode);<br />      }<br />      catch (UnsupportedEncodingException ex) {<br />        return "";<br />      }<br />    }<br /> <br />    public static final String getFileExtName(String filename)<br />    {<br />        String ext = "";<br />        int p = filename.lastIndexOf(".");<br />        if (p != -1)<br />        {<br />            ext = filename.substring(p + 1, filename.length());<br />        }<br />        return ext.toLowerCase();<br />    }<br /> <br />    public static final String getPath(long id)<br />    {<br />        String returnStr = "";<br />        char charArray[] = String.valueOf(id).toCharArray();<br />        int j = charArray.length;<br />        for (int i = 0; i &lt; j; i++)<br />        {<br />            returnStr += charArray[i] + File.separator;<br />        }<br />        return returnStr;<br />    }<br /> <br />    public static final String getUrlPath(long id)<br />    {<br />        String returnStr = "";<br />        char charArray[] = String.valueOf(id).toCharArray();<br />        int j = charArray.length;<br />        for (int i = 0; i &lt; j; i++)<br />        {<br />            returnStr += charArray[i] + "/";<br />        }<br />        return returnStr;<br />    }<br /> <br />    public static final String dateToMillis(Date date)<br />    {<br />      return "";<br />        /*if(ConnectionManager.getDateType() == 12)<br />            return zeroPadString(Long.toString(date.getTime()), 15);<br />        else<br />            return Long.toString(date.getTime());*/<br />    }<br /> <br />    /**<br />     * @param len 需要显示的长度(&lt;font color="red"&gt;注意：长度是以byte为单位的，一个汉字是2个byte&lt;/font&gt;)<br />     * @param symbol 用于表示省略的信息的字符，如“...”,“&gt;&gt;&gt;”等。<br />     * @return 返回处理后的字符串<br />     */<br />    public static String getLimitLengthString(String str,int len, String symbol) throws<br />            UnsupportedEncodingException<br />    {<br />        if(str==null || "".equals(str)) return str;<br />        int counterOfDoubleByte;<br />        byte b[];<br />        counterOfDoubleByte = 0;<br />        b = str.getBytes("GBK");<br />        if (b.length &lt;= len)<br />            return str;<br />        for (int i = 0; i &lt; len; i++)<br />        {<br />            if (b[i] &lt; 0)<br />                counterOfDoubleByte++;<br />        }<br /> <br />        if (counterOfDoubleByte % 2 == 0)<br />            return new String(b, 0, len, "GBK") + symbol;<br />        else<br />            return new String(b, 0, len - 1, "GBK") + symbol;<br />    }<br /> <br /> <br />    public static boolean isValidEmailAddress(String addr)<br />    {<br />        if(addr == null)<br />            return false;<br />        addr = addr.trim();<br />        if(addr.length() == 0)<br />            return false;<br />        Matcher matcher = basicAddressPattern.matcher(addr);<br />        if(!matcher.matches())<br />            return false;<br />        String userPart = matcher.group(1);<br />        String domainPart = matcher.group(2);<br />        matcher = validUserPattern.matcher(userPart);<br />        if(!matcher.matches())<br />            return false;<br />        matcher = ipDomainPattern.matcher(domainPart);<br />        if(matcher.matches())<br />        {<br />            for(int i = 1; i &lt; 5; i++)<br />            {<br />                String num = matcher.group(i);<br />                if(num == null)<br />                    return false;<br />                if(Integer.parseInt(num) &gt; 254)<br />                    return false;<br />            }<br /> <br />            return true;<br />        }<br />        matcher = domainPattern.matcher(domainPart);<br />        if(matcher.matches())<br />        {<br />            String tld = matcher.group(matcher.groupCount());<br />            matcher = tldPattern.matcher(tld);<br />            return tld.length() == 3 || matcher.matches();<br />        } else<br />        {<br />            return false;<br />        }<br />    }<br /> <br />    /**<br />     * 判断是否为数字组成的字串<br />     * @param validString 要判断的字符串<br />     * @return boolen值，true或false<br />     */<br />    public static boolean isNumber(String validString){<br />      try<br />      {<br />        if (validString == null)<br />          return false;<br />        byte[] tempbyte = validString.getBytes();<br />        for (int i = 0; i &lt; validString.length(); i++) {<br />          //by=tempbyte[i];<br />          if ( (tempbyte[i] &lt; 48) || (tempbyte[i] &gt; 57)) {<br />            return false;<br />          }<br />        }<br />        return true;<br />      }<br />      catch(Exception ex)<br />      {<br />        return false;<br />      }<br />  }<br /> <br />    private static final char QUOTE_ENCODE[] = """.toCharArray();<br />    private static final char AMP_ENCODE[] = "&amp;".toCharArray();<br />    private static final char LT_ENCODE[] = "&lt;".toCharArray();<br />    private static final char GT_ENCODE[] = "&gt;".toCharArray();<br />    private static Pattern basicAddressPattern;<br />    private static Pattern validUserPattern;<br />    private static Pattern domainPattern;<br />    private static Pattern ipDomainPattern;<br />    private static Pattern tldPattern;<br />    private static MessageDigest digest = null;<br />    private static final char CA[];<br />    private static final int IA[];<br />    private static final BitSet allowed_query;<br />    private static Random randGen = new Random();<br />    private static char numbersAndLetters[] = "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();<br />    private static final char zeroArray[] = "0000000000000000000000000000000000000000000000000000000000000000".toCharArray();<br />    private static MD5 md5 = new MD5();<br /> <br />    static<br />    {<br />        String basicAddress = "^([\\w\\.-]+)@([\\w\\.-]+)$";<br />        String specialChars = "\\(\\)&gt;&lt;@,;:\\\\\\\"\\.\\[\\]";<br />        String validChars = "[^ \f\n\r\t" + specialChars + "]";<br />        String atom = validChars + "+";<br />        String quotedUser = "(\"[^\"]+\")";<br />        String word = "(" + atom + "|" + quotedUser + ")";<br />        String validUser = "^" + word + "(\\." + word + ")*$";<br />        String domain = "^" + atom + "(\\." + atom + ")+$";<br />        String ipDomain = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$";<br />        String knownTLDs = "^\\.(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$";<br />        basicAddressPattern = Pattern.compile(basicAddress, 2);<br />        validUserPattern = Pattern.compile(validUser, 2);<br />        domainPattern = Pattern.compile(domain, 2);<br />        ipDomainPattern = Pattern.compile(ipDomain, 2);<br />        tldPattern = Pattern.compile(knownTLDs, 2);<br />        CA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();<br />        IA = new int[256];<br />        Arrays.fill(IA, -1);<br />        int i = 0;<br />        for(int iS = CA.length; i &lt; iS; i++)<br />            IA[CA[i]] = i;<br /> <br />        IA[61] = 0;<br />        allowed_query = new BitSet(256);<br />        for(i = 48; i &lt;= 57; i++)<br />            allowed_query.set(i);<br /> <br />        for(i = 97; i &lt;= 122; i++)<br />            allowed_query.set(i);<br /> <br />        for(i = 65; i &lt;= 90; i++)<br />            allowed_query.set(i);<br /> <br />        allowed_query.set(45);<br />        allowed_query.set(95);<br />        allowed_query.set(46);<br />        allowed_query.set(33);<br />        allowed_query.set(126);<br />        allowed_query.set(42);<br />        allowed_query.set(39);<br />        allowed_query.set(40);<br />        allowed_query.set(41);<br /> <br /> <br />    }<br />}<br /><br /></p>
<img src ="http://www.blogjava.net/parable-myth/aggbug/74624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/parable-myth/" target="_blank">我心飞翔</a> 2006-10-11 17:11 <a href="http://www.blogjava.net/parable-myth/articles/74624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>