加密类+序列化它

时间:2014-08-11 11:15:13

标签: c# protocol-buffers protobuf-net

我尝试在序列化之前加密一个类。我找到的唯一方法是加密它并返回一个String或一个流,是否可以返回原始类?

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;
}

1 个答案:

答案 0 :(得分:0)

你无法加密"一个protobuf没有序列化它。加密通常适用于字节,而不是数据结构。如果要对其进行加密,然后将加密版本作为字段嵌入到其他某个protobuf中,请使其他字段的类型为bytes,而不是Options

(理论上,您可以单独加密Options的每个字段,但这对您没什么帮助,并且很可能不如加密整个序列化blob安全。)