[code="java"]
private static final byte[] a;
static
{
new byte[] { 8, 2, 11, 12, 1, 10, 0, 13, 7, 3, 14, 5, 15, 6, 4 }[15] = 9;
a = new byte[] { 6, 4, 1, 9, 14, 11, 13, 8, 0, 15, 5, 2, 3, 7, 10, 12 };
}
public static byte[] a(byte[] paramArrayOfByte)
{
byte[] arrayOfByte = new byte[paramArrayOfByte.length];
for (int i = 0; i < paramArrayOfByte.length; i++)
{
int tmp12_11 = i;
byte[] tmp12_10 = arrayOfByte;
tmp12_10[tmp12_11] = (byte)(tmp12_10[tmp12_11] + (a[(paramArrayOfByte[i] >>> 4 & 0xF)] << 4));
int tmp33_32 = i;
byte[] tmp33_31 = arrayOfByte;
tmp33_31[tmp33_32] = (byte)(tmp33_31[tmp33_32] + a[(paramArrayOfByte[i] & 0xF)]);
}
return arrayOfByte;
}
[/code]
这个好象是对字节进行重组的。有人能帮忙写出反重组么?就是调用这个方法重组字节后,再用另一个方法重组回原来样子。。
不好意思上面的a和b变量修饰符忘写了
[quote="pxb1988"]
[code="java"]private static final byte[] a = new byte[] { 6, 4, 1, 9, 14, 11, 13, 8, 0, 15, 5, 2, 3, 7, 10, 12 };
private static final byte[] b = new byte[] { 8, 2, 11, 12, 1, 10, 0, 13, 7, 3, 14, 5, 15, 6, 4 };
public static byte[] a(byte[] paramArrayOfByte) //与上面代码等价
{
byte[] arrayOfByte = new byte[paramArrayOfByte.length];
for (int i = 0; i < paramArrayOfByte.length; i++)
{
arrayOfByte[i] = (byte)((byte)(a[(paramArrayOfByte[i] >>> 4 & 0xF)] << 4) + a[(paramArrayOfByte[i] & 0xF)]);
}
return arrayOfByte;
}
public static byte[] b(byte[] paramArrayOfByte) //逆过程
{
byte[] arrayOfByte = new byte[paramArrayOfByte.length];
for (int i = 0; i < paramArrayOfByte.length; i++)
{
arrayOfByte[i] = (byte)((byte)(b[(paramArrayOfByte[i] >>> 4 & 0xF)] << 4) + b[(paramArrayOfByte[i] & 0xF)]);
}
return arrayOfByte;
} [/code]
[/quote]
[code="java"]
byte[] a = new byte[] { 6, 4, 1, 9, 14, 11, 13, 8, 0, 15, 5, 2, 3, 7, 10, 12 };
byte[] b= new byte[] { 8, 2, 11, 12, 1, 10, 0, 13, 7, 3, 14, 5, 15, 6, 4 };
public static byte[] a(byte[] paramArrayOfByte) //与上面代码等价
{
byte[] arrayOfByte = new byte[paramArrayOfByte.length];
for (int i = 0; i < paramArrayOfByte.length; i++)
{
arrayOfByte[i] = (byte)((byte)(a[(paramArrayOfByte[i] >>> 4 & 0xF)] << 4) + a[(paramArrayOfByte[i] & 0xF)]);
}
return arrayOfByte;
}
public static byte[] b(byte[] paramArrayOfByte) //逆过程
{
byte[] arrayOfByte = new byte[paramArrayOfByte.length];
for (int i = 0; i < paramArrayOfByte.length; i++)
{
arrayOfByte[i] = (byte)((byte)(b[(paramArrayOfByte[i] >>> 4 & 0xF)] << 4) + b[(paramArrayOfByte[i] & 0xF)]);
}
return arrayOfByte;
}
[/code]