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]之类的回调?其他班级的吗?