近期在用Python的PyCrypto库做加解密时发现得出的结果和现有工具计算结果不一致,分析是因为我在使用PyCrypto做加解密时,直接将十六进制数字当作了字符串作为输入,模块会将字符串转换为字节码后再进行计算,导致结果不一致。
为了得到期望的结果,我们需要预先将字符串转换为对应的字节码。由于接触Python也不久,查阅了一些资料后,发现了快速转换的方法:
假如我们手中的字符串为:
str = 'EF545E77B51CBF98D8B58C9DA1BA4427'
使用bytes.fromhex()可以轻松将其转换为对应的字节码:
Bytes = bytes.fromhex(str)
得到结果为:
b'\xEF\x54\x5E\x77\xB5\x1C\xBF\x98\xD8\xB5\x8C\x9D\xA1\xBA\x44\x27'
同样将字节码转换为十六进制数字表示的字符串可以使用Bytes.hex()来完成:
Hex_str = Bytes.hex()
得到:
'EF545E77B51CBF98D8B58C9DA1BA4427'