62,621
社区成员
发帖
与我相关
我的任务
分享
class RC4
{
private static byte[] initKey(String aKey) {
byte[] b_key = aKey.getBytes();
byte state[] = new byte[256];
for (int i = 0; i < 256; i++) {
state[i] = (byte) i;
}
int index1 = 0;
int index2 = 0;
if (b_key == null || b_key.length == 0) {
return null;
}
for (int i = 0; i < 256; i++) {
index2 = ((b_key[index1] & 0xff) + (state[i] & 0xff) + index2) & 0xff;
byte tmp = state[i];
state[i] = state[index2];
state[index2] = tmp;
index1 = (index1 + 1) % b_key.length;
}
return state;
}
private static byte[] RC4Base (byte [] input, String mKkey) {
int x = 0;
int y = 0;
byte key[] = initKey(mKkey);
int xorIndex;
byte[] result = new byte[input.length];
for (int i = 0; i < input.length; i++) {
x = (x + 1) & 0xff;
y = ((key[x] & 0xff) + y) & 0xff;
byte tmp = key[x];
key[x] = key[y];
key[y] = tmp;
xorIndex = ((key[x] & 0xff) + (key[y] & 0xff)) & 0xff;
result[i] = (byte) (input[i] ^ key[xorIndex]);
}
return result;
}
public static String jiami(String str1,String key,String charset1)
{
String num = "";
try {
byte[] bby= str1.getBytes(charset1);
byte[] by = RC4Base(bby, key);
char[] arrayOfChar = new char[16];
char[] tmpArryOfChar = arrayOfChar;
tmpArryOfChar[0] = 48;
char[] tmp37_32 = tmpArryOfChar;
tmp37_32[1] = 49;
char[] tmp42_37 = tmp37_32;
tmp42_37[2] = 50;
char[] tmp47_42 = tmp42_37;
tmp47_42[3] = 51;
char[] tmp52_47 = tmp47_42;
tmp52_47[4] = 52;
char[] tmp57_52 = tmp52_47;
tmp57_52[5] = 53;
char[] tmp62_57 = tmp57_52;
tmp62_57[6] = 54;
char[] tmp68_62 = tmp62_57;
tmp68_62[7] = 55;
char[] tmp74_68 = tmp68_62;
tmp74_68[8] = 56;
char[] tmp80_74 = tmp74_68;
tmp80_74[9] = 57;
char[] tmp86_80 = tmp80_74;
tmp86_80[10] = 65;
char[] tmp92_86 = tmp86_80;
tmp92_86[11] = 66;
char[] tmp98_92 = tmp92_86;
tmp98_92[12] = 67;
char[] tmp104_98 = tmp98_92;
tmp104_98[13] = 68;
char[] tmp110_104 = tmp104_98;
tmp110_104[14] = 69;
char[] tmp116_110 = tmp110_104;
tmp116_110[15] = 70;
int k = by.length; // int k = paramString1.length;
char[] paramString2 = new char [k*2]; //paramString2 = new char[k * 2];
int j = 0;
int i = 0;
while (j < k)
{
int m = by[j];
int n = i + 1;
paramString2[i] = ((char)arrayOfChar[(m >>> 4 & 0xF)]);
i = n + 1;
paramString2[n] = ((char)arrayOfChar[(m & 0xF)]);
j++;
}
//paramString1 = new java/lang/String;
//paramString1.<init>(paramString2);
num= String.valueOf(paramString2);
} catch (Exception e)
{
// TODO: handle exception
Log.d("pgq",e.getMessage());
}
return num;
}
}