Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加密类+;序列化它_C#_Protocol Buffers_Protobuf Net - Fatal编程技术网

C# 加密类+;序列化它

C# 加密类+;序列化它,c#,protocol-buffers,protobuf-net,C#,Protocol Buffers,Protobuf Net,我试图在序列化类之前对其进行加密。我找到的唯一方法是对其进行加密并返回字符串或流,是否可以返回原始类 public static Options Encrypt(Options Settings) { Options sk = null; try { using (var stream = new MemoryStream()) { RuntimeTypeModel.Default.Serialize(stream

我试图在序列化类之前对其进行加密。我找到的唯一方法是对其进行加密并返回字符串或流,是否可以返回原始类

public static Options Encrypt(Options Settings)
{
    Options sk = null;

    try
    {
        using (var stream = new MemoryStream())
        {
            RuntimeTypeModel.Default.Serialize(stream, Settings);
            byte[] data = encryptWithPadding(stream.ToArray(), 0);
            String base64EncryptedString = Convert.ToBase64String(data);
            // needs to return an option instance
        }
    }
    catch (Exception e)
    {
         Global.LogError("Serialization failed", e);
    }


    return sk;
}
如果不序列化protobuf,就无法“加密”它。加密通常在字节上工作,而不是在数据结构上。如果要对其进行加密,然后将加密版本作为字段嵌入其他协议中,请使其他字段的类型为
字节
,而不是
选项


(理论上,您可以单独加密
选项的每个字段,但这对您没有多大帮助,而且很可能比加密整个序列化blob更不安全。)

您需要将此类对象序列化为更大对象的一部分吗?@LasseV.Karlsen是的,并对其进行加密,因此,在序列化父类时,它应该包含加密的成员。因此,静态加密方法是不够的,您需要对这种类型进行自定义序列化。protobuf net是否支持此功能?通过网络发送
字节[]
。不要试图将其转换回
Options
对象;所以哪一块坏了?在这里“返回原始类”意味着什么?您已经对数据进行了加密、序列化…是否可以显式调用[ProtoBeforeSerialization]之类的回调?其他班级的吗?