本帖最后由 凌风神舞 于 2023-2-23 18:08 编辑
我在调试的时候, 遇到了一段如下的JavaScript代码
function func_js(e) {
for (var t = r, n = e.slice(0, 32), o = e.slice(-16), a = e.slice(32, -16), i = "", c = 0; c < a.length; c += 2)
i += String.fromCharCode(parseInt(a.slice(c, c + 2), 16));
return btoa(i)
};
然后我用python改写了一下
def func_py(e):
n = e[:32]
o = e[-16:]
a = e[32:-16]
i = ""
for c in range(0, len(a), 2):
i += chr(int(a[c:c+2], 16))
return base64.b64encode(i.encode('utf-8')).decode('utf-8')
但是我发现两者运行的结果不一致(js是在浏览器控制台运行的), 但我发现如果我不进行base64编码, 直接返回i, 两者的结果是一致的
我用的样例字符串是
c3bc2823a1854022b8fc6b9f13d0fe20021769788b8c106e1c680da889e1a2be6062afefab6815126470189cbdc5ee57305d86eec6614620
使用js编码得到的是
'AhdpeIuMEG4caA2oieGivmBir++raBUSZHAYnL3F7lc=',
不编码得到的i是
'\x02\x17ix\x8B\x8C\x10n\x1Ch\r¨\x89ᢾ`bˉï«h\x15\x12dp\x18\x9C½ÅîW'
使用python编码得到的结果是
'AhdpeMKLwowQbhxoDcKowonDocKiwr5gYsKvw6/Cq2gVEmRwGMKcwr3DhcOuVw=='
不编码得到的i是
'\x02\x17ix\x8b\x8c\x10n\x1ch\r¨\x89ᢾ`bˉï«h\x15\x12dp\x18\x9c½ÅîW'
请各位大佬帮忙看下, 谢谢了
|