机器配置是否会影响使用protobuf-net创建的序列化输出的可访问性?

时间:2012-10-26 14:34:47

标签: c# protobuf-net

我正在使用protobuf-net加密,序列化并将对象的内容存储到文件中,并在解密并解压缩到原始对象后使用该文件的内容。

对象可以通过我的应用程序在创建它的机器上完美地解密和反序列化,但是当完全相同的应用程序在另一台机器上执行时读取完全相同的文件时,它会抛出一个异常,要求我引用一个stackoverflow上现有的问题。我现在无法发布确切的堆栈跟踪,但很快就会这样做。

我的问题是 - 将对象序列化和存储到文件中的机器的物理配置是否与其他地方的可用性有关?

我认为不应该这样,因为它会破坏序列化的目的,而且我的理解存在差距。

真诚感谢所有帮助。

谢谢!

修改

谢谢马克! - 对于回复和令人敬畏的图书馆本身。我将回发有关堆栈跟踪,使用的加密技术以及内容的长度和字节的更多详细信息。虽然我怀疑加密/解密代码逻辑中存在问题,因为相同的代码在一台机器上成功创建并使用该文件。也可以排除覆盖现有文件,因为创建的文件是使用guid命名的,因此重复的名称是不可能的。您能否澄清一下“在某些时候将文件视为文本”的具体含义?

1 个答案:

答案 0 :(得分:0)

不,不应该依赖机器配置。例如,在常规.net上序列化数据然后在Windows手机上反序列化,或者在iOS上通过MonoTouch在浏览器中统一数据是完全合理的。

然后,我首先关心的是它是否真的是“完全相同的文件”。特别是 解密之后(因为某些加密技术使用机器配置,但这与protobuf-net无关)

我强烈建议在解密后检查长度和字节(如果它很大,则使用散列函数)。常见错误:

  • 加密/解密代码中的错误
  • 用较少的数据覆盖预先存在的文件,最后留下旧垃圾(在这种情况下:确保截断文件)
  • 在计算机之间传输文件时出现损坏,例如在某些时候将文件视为文本

如果你有一个可重复的例子(无论是在这里,还是通过电子邮件,如果你不能在公开场合公布它),可以说更多。