满足我要求的强行强制XOR密钥

时间:2019-02-13 00:15:09

标签: python python-2.7

我的代码有问题,因为我试图找到可以满足我的要求的ASCII可打印范围内的字节,即如果我预定义字符串中的2个字节1与ascii范围中的1和将其总和设为0x210(十进制为528),但我无法正常工作

让我解释一下 我有一个字符串“ AABBCCDDEE”和ascii范围(33,128) 如果每个字节在ascii范围内与1个或多个字节进行异或运算,并加上所有异或运算,则输出为0x210

这是我的尝试,即使设置了条件,它也会不断添加到结果变量中

    #!/usr/bin/env python
import random

asciiRange = list(range(33,128))
fixedKey = "aCaCaCaCaC"
hKey = []
result = 0

for i in fixedKey:
    hKey.append(ord(i))

while result != 528:
    key = random.choice(asciiRange)
    print result
    for i in hKey:
        result += i ^ key
        print result
        if result > 528:
            break

2 个答案:

答案 0 :(得分:0)

问题是您没有在每次迭代前将 int theCount = 0; private void btnEnter_Click(object sender, EventArgs e) { int[] numbers = new int[20]; int num = 0; for (int i = 0; i < 20; i++) { if (int.TryParse(txtBxStats.Text, out num);) { numbers[i] = num; theCount++; break; } } lblNumCount.Text = $"{theCount} / 20"; } 设置为0。这是一个适用于小型重构的代码。

result

答案 1 :(得分:0)

中断确实会停止for循环,但是您仍然需要添加一个中断才能退出while循环,因为结果可能不等于528

此外,在相同条件下,if语句将退出循环,因此while循环不是必需的:

key = random.choice(asciiRange)
print result
for i in hKey:
    result += i ^ key
    print result
    if result > 528:
        break

或者您可以将while循环条件更改为:while result <= 528: