I have a hex value that I\'m grabbing from a text file, then I\'m passing it to a2b_hex to convert it to the proper binary representation. Here is what I have:
read()
doesn't strip newlines. If there's a '\n'
at the end of your file, it'll be in k1
.
Try binascii.a2b_hex(k1.strip())
or possibly binascii.a2b_hex(k1[:8])
.
Are you sure the file doesn't have something extra in it? Whitespace, for instance?
Try k1.strip()
I'm more interested what happens if you execute the following code:
with open("./" + basefile + ".key") as key_file:
key = key_file.read()
print len(key), key
Care to tell? There is probably some extra character you just don't see when printing. In these cases, make sure to print the length of the string.
I suspect there is a trailing newline at the end of the file. Strip the string before passing it to binascii
.
Note there's now also a simpler spelling: k1.strip().decode('hex')
.