我尝试在序列化之前加密一个类。我找到的唯一方法是加密它并返回一个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;
}
答案 0 :(得分:0)
你无法加密"一个protobuf没有序列化它。加密通常适用于字节,而不是数据结构。如果要对其进行加密,然后将加密版本作为字段嵌入到其他某个protobuf中,请使其他字段的类型为bytes
,而不是Options
。
(理论上,您可以单独加密Options
的每个字段,但这对您没什么帮助,并且很可能不如加密整个序列化blob安全。)