以下是一段在JSP页面里的加密代码,原理是获取sessionid,然后随机取得一位,与原字符串进行xor运算,然后把加密结果进行base64编码,和随机取得的字符一起传送。
String uid=request.getRemoteUser();
class EncUtil{
public String encrypt(String src,byte k) {
byte[] b=src.getBytes();
if (k==0) k=(byte)0xE3;
for (int i=0;i<b.length;i++) {
b[i] ^= k;
}
return new sun.misc.BASE64Encoder().encode(b);
}
};
java.util.Random r=new java.util.Random();
int random=r.nextInt(254);
EncUtil eu=new EncUtil();
uid=eu.encrypt(uid,(byte)random);
下一个页面在取得这个加密串后,首先进行base64解码,然后与随机数进行xor运算,获得原始字符串。
String userid = request.getParameter("uid");
int key = Integer.parseInt(request.getParameter("key"));
byte k = (byte)key;
class DesUtil {
public String decrypt(String src,byte k) throws Exception {
byte[] b = new sun.misc.BASE64Decoder().decodeBuffer(src);
if (k==0) k = (byte)0xE3;
for (int j=0;j<b.length;j++) {
b[j] ^= k ;
}
return new String(b);
}
};
DesUtil du = new DesUtil();
userid = du.decrypt(userid,k);