📄 securitytool.java
字号:
package com.ufmobile.common.security.bo;
public class SecurityTool {
private static String codestr = "!@#$&*()=:/;?+'%0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n-., ";
private static int codenum = 83;
public static int encrypt(String source, StringBuffer pdest) {
int nret;
int len;
int n1,n2;
int nn;
char[] psorc = source.toCharArray();
len = psorc.length;
nret = 0;
n1 = 0;
while(true) {
if(len - n1 < codenum) {
n2 = len - n1;
} else {
n2 = (codenum - 1) - ((int)(System.currentTimeMillis() % (codenum /2)));
}
nn = encrypt(source.substring(n1), n2, pdest);
if(nn < 0)
return nn;
n1 = n1 + n2;
nret = nret + nn;
if(n1 >= len)
break;
}
return nret;
}
public static int decrypt(String source, StringBuffer pdest) {
int nret;
int alllen, len, sublen;
int n1,n2;
int p1;
int nn;
char[] psorc = source.toCharArray();
nret = 0;
p1 = 0;
alllen = psorc.length;
if(alllen < 4)
return -2; //格式错误
while(true) {
n1 = getpos(psorc[p1]);
n2 = getpos(psorc[p1 + 1]);
sublen = (n2 + codenum - n1) % codenum;
len = sublen + 4;
if(p1 + len > alllen)
return -2; //格式错误
nn = decrypt(source.substring(p1), len, pdest);
if(nn < 0)
return nn;
p1 = p1 + len;
nret = nret + nn;
if(p1 >= alllen)
break;
}
return nret;
}
private static int encrypt(String source, int len, StringBuffer pdest) {
char c;
int n, i, n1, n2;
char[] psorc = source.toCharArray();
n1 = (int)(System.currentTimeMillis() % codenum);
n2 = (n1 + len) % codenum;
pdest.append(codestr.charAt(n1));
pdest.append(codestr.charAt(n2));
n1 = (int)((System.currentTimeMillis() + 1) % codenum);
n1 = (int)((System.currentTimeMillis() + 2) % codenum);
pdest.append(codestr.charAt(n1));
pdest.append(codestr.charAt(n2));
for(i = 0; i < len; i++) {
c = psorc[i];
n = getpos(c);
if(n < 0)
return n;
n = (n + codenum + n2 - n1) % codenum;
pdest.append(codestr.charAt(n));
n1 = n2;
n2 = n;
}
return 4 + i;
}
private static int decrypt(String source, int len, StringBuffer pdest) {
char c;
int n, i , n1, n2, nn, sublen;
char[] psorc = source.toCharArray();
sublen = len - 4;
n1 = getpos(psorc[2]);
n2 = getpos(psorc[3]);
for(i = 0; i < sublen; i++) {
c = psorc[4 + i];
n = getpos(c);
if(n < 0)
return n;
nn = n;
n = (n + codenum - n2 + n1) % codenum;
pdest.append(codestr.charAt(n));
n1 = n2;
n2 = nn;
}
return i;
}
private static int getpos(char c) {
for(int i = 0; i < codenum; i ++) {
if(c == codestr.charAt(i))
return i;
}
return -1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -