gpt4 book ai didi

.net - .NET中的序列化和混淆

转载 作者:行者123 更新时间:2023-12-04 03:16:48 25 4
gpt4 key购买 nike

我有一个我想混淆的二进制文件并分发给用户。让我们假设我使用了我的二进制文件的未混淆版本来使用现成的.NET二进制格式化程序对数据进行序列化。然后我们可以使用混淆后的二进制反序列化数据吗?
我想分发混淆的二进制文件以及序列化数据。如果以上问题的答案是肯定的,那么我可以在用户之间共享序列化的数据。否则,我将不得不向每个用户提供单独的序列化数据。

最佳答案

混淆后的二进制数据和序列化数据之间似乎有些混淆。如果您使用默认的序列化程序序列化您的类,则在该序列化的数据中将类名和属性/字段值用作字符串-因此,如果混淆了二进制文件,则使用该二进制文件的序列化数据将具有混淆的名称,而您的非如果执行以下任何操作,则混淆的二进制文件将无法读取由混淆的二进制文件创建的序列化数据:

  • 在序列化的类
  • 上使用类重命名
  • 在序列化的类
  • 上使用成员重命名

    以下是一些解决此问题的方法:
  • 我已经有一段时间没有使用它了(因此,您将要验证它是否适合您的情况),但是如果您使用的是二进制格式化程序,则可以通过提供处理程序的构造函数来控制如何将数据存储在序列化文件中SerializationInfo和StreamingContext。如果您在Google周围搜索示例,则应该找到一个示例(这是我找到的一个示例:Serialize Objects to File)。由于大多数人并不觉得它很有趣,因此您可能不会在其中找到很多新文章,但是,这实际上是指定您的类如何使用二进制格式化程序保存自身并重新填充自身的最简单方法。

    在必须实现的构造函数中,将字符串用于键/值对以进行序列化-混淆时,这些字符串可能会被加密(确定),并且属性设置语句将被重命名并与混淆后的类保持同步/成员名称-因此它既适用于混淆的程序集,也适用于非混淆的程序集。
  • 中的另一个选项是从混淆中排除要序列化的类,而只是对数据文件进行加密。
  • 关于.net - .NET中的序列化和混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679187/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com