首先我们来看两段代码:
python2.7:
1 | text = 'system' |
结果:
1 | fYN9fm93 |
python3.5:
1 | text = 'system' |
结果:
1 | b'fcKDfX5vdw==' |
我们可以发现,两次base64的结果并不相同。
原因:
我们可以将text1打印出来:
python2.7:
1 | text = 'system' |
结果:
1 | }儅~ow |
python3.5:
1 | text = 'system' |
结果:
1 | b'}\xc2\x83}~ow' |
在经过1
chr(ord(i) +10)
操作之后,text1的ascii码变为:
1 | 125,131,125,126,111,109 |
对应16进制
1 | \x7d,\x83,\x7d,\x7e,\x6f,\x6d |
我们可以发现,在python3.5的情况下,\x83变成了 \xc2\x83,这是因为str.encode默认采用utf-8编码来解码text1。
解决方法:
在python3.5下,我们可以使用bytesarray
1 | text = 'system' |
结果:
1 | bytearray(b'}\x83}~ow') |