我已经从xsd架构(使用xsd.exe)自动生成了一个类(vb.net)。我用数据填充对象属性并将对象序列化为xml并将xml存储在字符串中。在我的xml中,我必须加密一些元素。这样做的最佳方式是什么?
在将对象序列化为xml之前,我可以加密对象属性吗?在我对xsd架构的文档中,它说所有加密值(元素)都必须是字符串,但是当我从xsd schem自动生成类时,Birth number设置为date而不是string ...?出生数是我必须加密的元素的一部分。 我想使用PKI来加密我想用来加密xml元素的对称密钥。
有人可以帮我这个吗? 谢谢!
答案 0 :(得分:1)
一个简单的解决方案可能是公开每个属性的两个版本,加密和未加密,并使用[XmlIgnore]标记所有未加密的版本。
如果您无法编辑自动生成的类,并且希望加密这些属性,则可以在分部类中添加未加密的包装器属性,例如
==在自动生成的文件中:
class MyClass {
String SensitiveProperty { get; set; }
}
==在非自动生成的部分文件中:
partial class MyClass {
[XmlIgnore]
String SensitivePropertyDecrypted {
get {
return CryptoHelper.Decrypt(SensitiveProperty);
}
set {
SensitiveProperty = CryptoHelper.Encrypt(value);
}
}
}
...其中“CryptoHelper”是您编写的类,用于支持您希望实现的加密方案(即使用您使用PKI传递的对称密钥)。