base64 问题
问题如下:
对一个tgz文件进行base64 encode. 然后对其decode ,得到文件后进行解压,再对解压出来的文件打包(与原tgz文件名相同)。再次 encode... , 为什么两次encode的base64编码会不同。
a.log 内容(第一次encode 的base64编码):
H4sICPJvt1kC/3JwLnRnegDtGF1v2zbQzwP2HzQhD9sDLclO3NSQlXVtUmzrsqJNNmwvBiNRMgdJJEjKSf79jvr+sJM6aDqs0Bmwfcf75t2REhHUl5Kl07sknjwT2ACLxXH+C9D7dWDxZOLMnZOTxeLFi8VsYjvzY8eZGPbkC0AmFRaGMRGMqYf4HlvvB/c/AfcMNt7YEiEpS1emM7VN48z79hvXZ2lIIwNWU7kyN0rxpWUpTGMUTn2WWKm0ChZLy4CEYWgZRe6UrKQykS5FkMolCCxJWWlLhpOEBSSuKaiSQ5QzWegCbZKILfVJiQIhyWJFeUxqfk+JjLjWkF5qsNoqXKuz7GLJD/UTRMBFUXsYkBCD7TXQ11gp0bg6WElwiiOSkFRZjmvtF5SbTAXsNvVCHEuIrcarkHaKuhagz7EHJfWJyjq6Gm0oxQnxYubjuN6UglZzxiyKaBodaleLEdEzWxiWLCZVUiu0NmeV9hoK5W35gCWYprmPh7oELAN/QGMe7vWHd0bIhPHm8qOxIQI862Qh3+7GcpsOQ0tRHwmWqYM9asvuco1yxAUJ6Z1nT/OPZbtWQ+yGobduwzhS95x4NYaDQBApIZ7O+k5Rz3k5mzqL06lzejo9tRuZLntApC8oVzCmvI/nH/74+fW5cXl+pRuiWWhnrh1ma6dbG1tNmIMTWIgNy0yGque1ZiXC6jrW5XIBRX5M9WjoKJObx3Tpyh4KWl1JV5E4JeqJugbCrvT5U/1qSXZnc2s675zVFBARYp90xholKlxyLHAil0Bews7d4zTK6agRqYdZTWq8yPsqiRL1YzmOumNIV21hcUlhgNNQPWIZmBAN82o3vVJkSfkFE7dYBJDOdhu48bxx89AibOJDw0nbzNremG1z0N4+lk3bIZZk6H2aYHHfWytXux18bM1ewnmk6T1N1l5VxVLfuCtZJqDP9jjG8p6XQ59kmnBrB1ludlCh+6yBo7tUQ8Xuc6c7Vaz2ttblPaDsrcb6pvA81UgUHDXQ069lgv1BSZIU38QkKG9WFdYsl8KHVmslt7tWb2gaoGE+qjSFaNCmDXXI7Ks7r82m8fZe7bEG0ZZO7tmzFl6OJXkvFUk+eSQV7PU4whnYS+GMwp2zy81gMrYdzsOsMjm8InAs5S0TQYulJjWxtZRCs+2y7G6YVLnyv96h7ds/0bU9c62aWGSgCKFAUux/euyQVv24gECmTkAEZzNv+qjA90aOZMY5E2qYAR1bUQzndQoaWpODrv495ooIockTmj5kinw2U5L4maDq/ovYJDxC/gYLfdv9YgZjfBtmcdFzPuHqcxousbIjLV2UX9/znW5zxuJGjcZQlV+NQNPXpP79VvP071tFgnpuVw+R2o/aXkV2y+d9+DsZ4WsBshVTva/PaePh93+2Y88Xvfd/sxN7Pr7/+6/e/5HUZwGcDyvz+uoCnZpn1VA4T7ckZvV10f0OoWqavGb8XtBoo4zv/R+Mme2cIPh6YVQnsvHqp2nF+yqOjZxXGnCR1k+PQbmGUKX6vaBbGpOIXAODcQljbWWu82PDMY335f1mZR45R3ZkS3/zjzqKwpsoCab05O/z33+ZX/y2ZW9/3U7N6nbv3vB1QkRE1vk5lOK4vOQO6aVAgu/WaZasY38tYwbPonPbtQbEknl7gW/ew/XEuMySGyJW5sw0ruBqvTKloGwLbhhGyQrjeO1ro4nnLOanx3DzbChdHp9n3qJe11hrnQ908IEOXkg5ds2g0doVHYI3h3te/qea/fU+j/NxhBFGGGGEEUYYYYQRRhhhhBG+BvgXgLSc7gAoAAA=
代码:
import base64
import tarfile
import sys
import os
# Read a.log decode base64 to evr.tgz
with open("a.log", "r") as fr:
with open("evr.tgz", "wb") as fw:
fw.write(base64.b64decode(fr.read()))
# untar evr.tgz
if os.path.exists("evr.tgz"):
tar = tarfile.open("evr.tgz")
tar.extractall()
tar.close()
os.remove(sys.path[0]+"\evr.tgz")
# tar ericsson.xml and evr.conf to new evr.tgz
wtar = tarfile.open("evr.tgz", "w:gz")
for dirpath,dirs,files in os.walk(sys.path[0]):
for filename in files:
if (filename == "ericsson.xml") or (filename == "evr.conf"):
wtar.add(filename)
os.remove(filename)
wtar.close()
# base64 encode evr.tgz to b.log
with open("evr.tgz", "rb") as f1:
with open("b.log", "w") as f2:
base64.encode(f1, f2)
os.remove(sys.path[0] + "\evr.tgz")
# compare a.log and b.log