看了一上午没找出来的算法错误
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分求教
...全文
相关推荐
找出两个字符串之间相同字符算法题
### 找出两个字符串之间相同字符算法题#### 背景与问题描述在处理文本数据时,经常需要比较两个字符串之间的相似性或者找出它们共有的元素。
N枚硬币中找出假币
对于这类算法问题,通常可以使用伪代码、流程图或者调试工具来辅助理解和修复潜在的错误。总之,“N枚硬币中找出假币”的问题是一个涉及分治策略和递归的经典算法问题。
从键盘上输入3个数,把最小数找出来
标题提到的任务是“从键盘上输入3个数,把最小数找出来”,这是一个基础的算法问题,适用于任何支持用户输入的编程语言,如C、C++、Java、Python等。
TypeScript_MDH Weekly 前端周刊每周一上午 9 点发布.zip
TypeScript在前端开发中扮演着重要角色,因为它能够通过静态类型系统来减少JavaScript中常见的运行时错误,同时提高了开发效率和代码的可管理性。
易语言网页播放没声音问题
**源码问题**:压缩包内的“易语言网页播放没声音问题源码”可以用于深入分析问题。查看源码,找出与音频播放相关的部分,检查是否有逻辑错误或者缺失的关键步骤。6.


