加密类+序列化类

本文关键字:序列化 加密 | 更新日期: 2023-09-27 18:17:31

我试图在序列化类之前加密它。我发现的唯一方法是加密它并返回字符串或流,是否有可能返回原始类?

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进行序列化,则无法对其进行"加密"。加密通常处理字节,而不是数据结构。如果您想加密它,然后将加密版本作为字段嵌入到其他协议中,请使其他字段的类型为bytes而不是Options

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