byte[] aArr = { 113, 76, 155, 186, 152, 127, 248, 183 };
byte[] bArr = new byte[8];byte[] key = { 0, 0, 0, 0, 0, 0, 0, 0 };
for (int i = 0; i < 8; i++)
{
if (i > 0)
{
key[i % 8] = (byte)(key[i % 8] + aArr[i - 1] ^ (byte)i);
bArr[i] = (byte)(aArr[i] - aArr[i - 1] ^ key[i % 8]);
}
else
{
bArr[i] = (byte)(aArr[i] ^ key[0]);
}
}Log(aArr, " aArr ");
Log(bArr, " bArr ");key = new byte[8];for (int i = 0; i < 8; i++)
{
if (i > 0)
{
key[i % 8] = (byte)((aArr[i] - bArr[i]) ^ aArr[i - 1]);
key[i % 8] = (byte)(key[i % 8] - aArr[i - 1] ^ (byte)i);
}
else
{
key[0] = (byte)(aArr[i] ^ bArr[i]);
}
}
Log(key, "CalcKey");输出结果:
[ aArr ] 71 4C 9B BA 98 7F F8 B7
[ bArr ] 71 AB 01 87 60 7A 00 40
[CalcKey] 00 5E 88 0E CC 00 0E 90
为什么逆推出来的Key不是8个0呢~~ 100分求教
谢谢bdmh指导
学校的东西忘光了,负数情况要如何处理?
byte[] bArr = new byte[8];byte[] key = { 0, 0, 0, 0, 0, 0, 0, 0 };
for (int i = 0; i < 8; i++)
{
if (i > 0)
{
key[i % 8] = (byte)(key[i % 8] + aArr[i - 1] ^ (byte)i);
bArr[i] = (byte)(aArr[i] - aArr[i - 1] ^ key[i % 8]);
}
else
{
bArr[i] = (byte)(aArr[i] ^ key[0]);
}
}Log(aArr, " aArr ");
Log(bArr, " bArr ");
Log(key, " Key ");key = new byte[8];for (int i = 0; i < 8; i++)
{
if (i > 0)
{
key[i % 8] = (byte)(aArr[i] - aArr[i - 1] ^ bArr[i]);
key[i % 8] = (byte)((byte)(key[i % 8] ^ (byte)i) - aArr[i - 1]);
}
else
{
key[0] = (byte)(aArr[i] ^ bArr[i]);
}
}
Log(key, "CalcKey");
[2011-6-21 12:22:25]:[ aArr ] 71 4C 9B BA 98 7F F8 B7
[2011-6-21 12:22:25]:[ bArr ] 71 AB 01 87 60 7A 00 40
[2011-6-21 12:22:25]:[ Key ] 00 70 4E 98 BE 9D 79 FF
[2011-6-21 12:22:25]:[CalcKey] 00 00 00 00 00 00 00 00
CSDN这个设置不好,,,自己不能编辑和回帖。。可以了,结帖`