我在一个post请求里找到一个加密参数,我把他解压缩找到原数据后,在进行压缩回去时,数据就跟原来不一样了。
import base64
import gzip
b = "H4sIAAAAAAAAAESPMQ6CMBiFr2LY0b/0r0CZ1FZDYsAAYlQcaIGExGBi4uBFPAaLs9fRa2h1cHjD9763vL01lYsw4vlskojiXHS5TNIwjjgdgsFVEotQ8LTtysGmbtVpkF47PSI/u/6ohiBltCk9j2I5dhCU0poRx1MuVopWZjeP+OvWPx/9s78b/mLw4W8CU2VyGWTblSwuALTS9fHIie1SsIEwG13fN6NE5twB4gMCZsAYIu5MLyPxf2Ad3gAAAP//AwB4d3pd1QAAAA=="
b_ = base64.b64decode(b.encode('utf-8'))
b_s = gzip.decompress(b_)
new_b_s = gzip.compress(b_s)
print(b_)
print(new_b_s)
此代码为python3,python2我也尝试过,也是同样问题
psot 一般用base64解码后,已经不需要在解压缩了吧
要看看你的原始数据是如何压缩的,可能一些参数跟py的gzip不一样。但是解压后的内容都是相同的,这个对于你明文处理应该没什么问题
content ='H4sIAAAAAAAAAI1SS2rDMBS8i9bF2LVjO9kZQsGL0EILLZRiXqTnRMSWjCQ7hNITlEIv0yO156jkT7wpNDszM29mnp6fX0mrURWckRUJrsNoEcdJmizTJbki0DSFgBotdY9CS6XXYCC7y9dYy5HftoJVmK+thsra04OOWZ0HAqqT4VTbL6YkZx4b5hh2nOKQGaYlLdPE91lcQgnJTNeSYUVWQRT5Q5TURYfK9QzG8BqUOaCx0L6FI/J5eKtspsWf8ux2k5PJwCLZ0GWERkPPn0fNqXEbN3spcFQxeRSVBFZo2Srq2J2Uu8rRvawQaI5SHSzxmN+4ONYqMFwKskq9JLQulKLWRQNmf/FLeUAN77g5eQ+ozQa4yEbA5cIOp+P8fL1/f378IcIOhZlU/cQ/0ml3Kz1j/ZnqbdH/J5eYuNpuc+LORCveG/O+QxCH6TLy43gR+JFlraW9wMjOZBr4by+/OTb1nZsCAAA='
base64_data = base64.b64decode(content)
print(base64_data,type(base64_data))
bytes_decom = gzip.decompress(base64_data)
print(bytes_decom,type(bytes_decom))
app_str_unzip = bytes_decom.decode()
print('app_str_unzip====>',app_str_unzip,type(app_str_unzip))
print('=================================')
bytes_app_str_unzip = str(app_str_unzip).encode("utf-8")
print(bytes_app_str_unzip,type(bytes_app_str_unzip))
bytes_com = gzip.compress(bytes_app_str_unzip)
print(bytes_com,type(base64_data))
我也遇到同样的问题了,求大神解决一下是哪个字符导致的
搞清楚了,不一样是正常的,因为默认会把当前时间写入到压缩字符串的头里面,不影响解压缩的结果