//数据加密解密处理
public class Crypt {
/**
* ENCODERTEXT
*/
static final String ENCODERTEXT = "lsdfoglkwjemc-091324jlkmsda-0sd=1234;l;lsdkOPIER203-4LKJSLDJAS0D925JKNNC,MANSLDJQ32ELK1N4SAIp089er0234lkjo9df82l3kjlknf,nzxc,mn;lasdj9wquelq;d]qowe[;wq;qkwellsdkfj0-0POPOAR0W8RPOp-02@#$sdklj$#)0asdlksadLKJFA9820934)(&$3ij09sdj34-sdfj2po345-09dlkfjlkv,mxncv;laskdkl/a;au093hakjh2389~!@%&*%#&^539478(*&)^(&^_*8-*_+++|78w3ihsdnmnclksdj)(*#%*_@$(+#@$)&@#^*&^#@$()(*#@$HDFIkdhfgkjh098k;ldsk.sdv.c,msd;flkp0w34;2lk-=sd0p121o39-werl2k3;4lj09sdflskjlekfj,mv,mcxvjlksjdflksjdl*(#@!&akhduyqweperilmmdxcasnd*(#@9879327kjhasudfewr kwehriwueyrhc ausdgiq7w8e71 cdsh93ol2q32879y8932qwhdkjanhdskjaoe*&w#jh$)(*dsFshc na89wue32e981yewher12(*&#quds)(*i3o1928osaihdaklsdkalkduqowe3290874kljhklasdhlijhqweio4hwe89(*$#$eriho349oij(#*q$OIJHO)(&*#$_)(IUDSOIUoiOIUSAODFU034liusdrogiuet0lsdmc,.mg;lq-091lk3l;kjsdf--123098fe*(JOKJSFD983345oihjdp0(#*$&#@!HKJH!(@#*&ioysdk@#)uhOA7E98R7239845K(*&(#@*$&HKFDJHWERYIWoi)(*&#@&^%@!dsfoi;.;,p[osklejr230897*(&we2&^%@78*(&#@!(7~&*~^@*&^#(*&auroiqkjwrhoasdf89qlrlkjpour09werk23jh"
;
public Crypt() {
}
/**
* @param str String
* @return String
*/
public String encrypt(String str) {
int i, j;
int seed = ((int) (Math.random() * 255)); //Random1(255);
int pre = seed & 3;
int len = str.length();
int elen = ENCODERTEXT.length();
String ret = "";
ret += encodeChar(seed);
ret += encodeChar((((int) (Math.random() * 255)) & 0xfc) + pre);
for (i = 0; i < pre; i++) {
ret += encodeChar((int) (Math.random() * 255));
}
for (i = 0, j = seed; i < len; i++) {
ret += encodeChar((int) ((str.substring(i, i + 1)).getBytes()[0])
^ (int) (ENCODERTEXT.substring(j, j + 1).getBytes()[0]));
if (++j >= elen) {
j = 0;
}
}
return ret;
}
private String encodeChar(int c) { //Writed by Daniel
String s = "";
int x = (int) (c / 16);
if (x > 9) {
s += (char) (x - 10 + 0x61);
} else {
s += x;
}
x = c % 16;
if (x > 9) {
s += (char) (x - 10 + 0x61);
} else {
s += x;
}
return s;
}
//add by Randy at 02/27/2002 for office floder password
/**
* @param str String
* @return String
*/
public String decrypt(String str) {
int seed = decodeChar(str, 0);
if (!isNaN(seed)) {
return "";
}
int pre = decodeChar(str, 2);
if (!isNaN(pre)) {
return "";
}
pre = pre & 3;
String ret = "";
long x;
int i, j;
int len = str.length();
int elen = ENCODERTEXT.length();
for (i = pre + pre + 4, j = seed; i < len; i += 2) {
x = decodeChar(str, i);
if (!isNaN(x)) {
return "";
}
byte ch = (byte) ENCODERTEXT.charAt(j);
x ^= ch;
ret += (char) x;
if (++j >= elen) {
j = 0;
}
}
return ret;
}
private int decodeChar(String str, int i) {
try {
return Integer.parseInt(str.substring(i, i + 2), 16);
} catch (NumberFormatException err) {
return -1;
}
}
private boolean isNaN(long num) {
if (num < 0) {
return false;
}
return true;
}
}
数据加密解密处理
最新推荐文章于 2022-06-24 19:02:49 发布