如何解决十六进制转二进制问题
我得到了 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
解决方法
您正在使用 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。