chronoxor / FastBinaryEncoding

Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift
https://chronoxor.github.io/FastBinaryEncoding
MIT License
827 stars 86 forks source link

Is it possible to hide protocol field names #70

Open romanholidaypancakes opened 2 years ago

romanholidaypancakes commented 2 years ago

image

image

We are using protobuf now, it will keep the protocol in binary, it can almost restore the protocol, I noticed that FastBinaryEncoding also has this problem, I hope not to keep any related strings with the protocol declaration

chronoxor commented 2 years ago

You can annotate field as [Hidden]: image

And its output will be ***: image

romanholidaypancakes commented 2 years ago

image The field names remain in the source code, and as long as you are familiar with fbe, you can still infer the message structure through reverse engineering

chronoxor commented 2 years ago

Ok, as I understand you want to have 'transparent' fields that are present in objects/clases, but not serializable/deserializable and not output in logger/std::streams. Am I right?

When deserialzed this fields are skip and contain default or prev value.

Something like [NonSerialized] attribute in .NET: image

romanholidaypancakes commented 2 years ago

No, serialization/deserialization is still supported, you can check flatbuffers or capnproto (they generate source code that doesn't keep any strings), just to protect data don't want any message interface strings to be preserved in source code. Because once retained it can be easily reverse engineered, which is especially important in our game, where we want to hide the message structure