@
whoami9894 不是的,Python2 中所谓的字符串其实就是 bytes。
在两段代码中 base64 编码 payload 的时候,传入的 bytes 是不一样的,所以结果不同。
举个例子,虽然在 Python2 和 Python3 中 '\xef' 看起来是一样的,但是在 Python2 中这就是一个 0xef 的 byte,而在 Python3 中则代表 U+00ef 这个 Unicode 字符,使用 utf-8 编码后就是 b'\xc3\xaf' 这个 bytes。
可以在 Python3 中试一试:
'\xef' == '\u00ef'
想把 U+0080 到 U+00ff 的 Unicode 字符编码为对应的 0x80 到 0xff 的 byte,就要使用 latin-1 编码,这个不受语言的影响。