在一個項目中,被要求用protobuf加密。對方生成了一個編譯後的py文件給我。
給我指示:把我生成的變量值賦值到py文件的data類中,再調用其中的serialtostring()方法來實現protobuf加密。
理解下來,其實protobuf加密就是序列化。
我把py文件加載到我的pycharm工程中,其中開頭加載依賴中有寫:
from google.protobuf import…
但是我在pycharm的setting裡面,安裝了google後,這個加載依賴的命令還是有紅色波浪線。
所以我上網查了以下如何安裝protobuf,其中下面這篇博文推薦大家:
https://blog.csdn.net/u013210620/article/details/81317731
其中有個地方好像錯了:
3.繼續安裝protobuf的python模塊(如果不用python,可跳過這一步)
cd ./python
這裡應該是cd python/
按照上面這篇blog安裝後,會在下面的路徑中看到google文件夾:
/opt/protobuf3.6.0/python/
接下來,我把這個目錄下的整個google文件夾拷貝到我的pycharm工程裡,加載依賴包裡的紅色波浪線就消失了,加載依賴就成功了。
protobuf的結構文本序列化成了二進制
data_serial = XXXX_pb2.Data()
data_serial.timeStamp = int(time.time())
pay_pid_serial = data_serial.SerializeToString()
通過實例化,再賦值,再調用其中的一個方法的方式,就可以實現protobuf加密了。
二進制轉換成protobuf
使用函數ParseFromString()
data_str = XXXX_pb2.Data() # 實例化
data_o = data_str.ParseFromString(data_i)
# data_i: 需要反序列化的字符串編碼
# data_o: 反序列化後proto格式的數據
關於使用,這個blog寫的不錯:
https://blog.csdn.net/u013421629/article/details/114266759