很久以前弄的了,作个记录, 不说了,上代码: function encpw($src){ $spw=$src; //$spw=base64_decode($src); $Xbox1 = array( chr(75), chr(99), chr(200), chr(24), chr(64), chr(10), chr(23), chr(52) ); $Xbox2 = array( chr(12), chr(28), chr(21), chr(100), chr(29), chr(44), chr(87), chr(23) ); $Xbox3 = array( chr(23), chr(11), chr(33), chr(134), chr(123), chr(29), chr(12), chr(12)); $Xbox4 = array( chr(39), chr(22), chr(19), chr(103), chr(145), chr(199),chr(20), chr(77) ); $len = strlen( $spw); for ( $c = 0; $c <$len; $c++ ) { $index = $c % 8; $spw[$c] =$spw[$c]^ $Xbox1[$index]; $spw[$c] =$spw[$c]^ $Xbox2[$index]; $spw[$c] =$spw[$c]^ $Xbox3[$index]; $spw[$c] =$spw[$c]^ $Xbox4[$index]; } for ( $pos=0; $pos < $len; $pos++ ) { if ( ord($spw[$pos])==0) { $spw[$pos] = $src[$pos]; } } return base64_encode($spw); } java: public static String decode(String s){ String result = ""; int []Xbox1 = {(int)75,(int)99,(int)200,(int)24,(int)64,(int)10,(int)23,(int)52}; int []Xbox2 = {(int)12,(int)28,(int)21,(int)100,(int)29,(int)44,(int)87,(int)23}; int []Xbox3 = {(int)23,(int)11,(int)33,(int)134,(int)123,(int)29,(int)12,(int)12}; int []Xbox4 = {(int)39,(int)22,(int)19,(int)103,(int)145,(int)199,(int)20,(int)77}; StringBuffer s1 = new StringBuffer(s); byte [] k = new byte[s1.length()]; int index; for ( int i = 0; i < s1.length(); i++ ) { index = i % 8; k[i] = (byte)(s.charAt(i)^Xbox1[index]^Xbox2[index]^Xbox3[index]^Xbox4[index]); } for ( int i = 0; i < k.length; i++ ) { if(((int)k[i])==0) { k[i] = (byte)s.charAt(i); } } BASE64Encoder b = new BASE64Encoder(); result = b.encode(k); return result; }