我得到了 1 个键的预期输出,但不是另一个。假设我的数学公式是正确的 KEYCHARS/2 = 十六进制计数 * 8 = 二进制输出字符计数
所以换句话说,我的密钥长度为 52,我应该得到 208 个二进制字符
key1 = "37dcb292030faa90d07eec17e3b1c6d8daf94c35d4c9191a5e1e"
key2 = "a6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313"
binkey1 = bin(int(key1, 16))[2:].zfill(8)
binkey2 = bin(int(key2, 16))[2:].zfill(8)
print()
print(len(binkey1)) # output 206 chars
print(len(binkey2)) # output 208 chars
length = len(binkey1)
i = 0
currentbin1 = ""
currentbin2 = ""
xorbin = ""
while i < length :
currentbin1 = binkey1[i]
currentbin2 = binkey2[i]
if currentbin1 == currentbin2 :
xorbin = xorbin + "0"
else :
xorbin = xorbin + "1"
i = i + 1
print("xored bin")
print(xorbin) # output is as desired as far as I can tell but missing bits due to the shorting above
答案 0 :(得分:0)
您正在使用 zfill()
来填充您希望长度为 208 个字符的二进制字符串。但是根据您自己的数学计算,您调用的参数为 8 而不是 208。
只改变这个:
key1 = "37dcb292030faa90d07eec17e3b1c6d8daf94c35d4c9191a5e1e"
key2 = "a6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313"
binkey1 = bin(int(key1, 16))[2:].zfill(208)
binkey2 = bin(int(key2, 16))[2:].zfill(208)
print()
print(len(binkey1)) # output 206 chars
print(len(binkey2)) # output 208 chars
length = len(binkey1)
i = 0
currentbin1 = ""
currentbin2 = ""
xorbin = ""
while i < length :
currentbin1 = binkey1[i]
currentbin2 = binkey2[i]
if currentbin1 == currentbin2 :
xorbin = xorbin + "0"
else :
xorbin = xorbin + "1"
i = i + 1
print("xored bin")
print(xorbin) # output is as desired as far as I can tell but missing bits due to the shorting above