如何加密xml元素



我从xsd模式(使用xsd.exe)自动生成了一个类(vb.net)。我用数据填充对象属性,并将对象序列化为xml,并将xml存储在字符串中。在我的xml中,我必须加密一些元素。最好的方法是什么?

我可以加密我的对象属性之前,我序列化对象到xml?在我对xsd模式的文档中,它说所有加密值(元素)必须是字符串,但是当我从xsd模式自动生成类时,出生编号被设置为日期而不是字符串…?出生号码是我要加密的元素之一。我想使用PKI来加密我想用来加密xml元素的对称密钥。

有人能帮我一下吗?谢谢!

一个直接的解决方案可能是公开每个属性的两个版本,加密的和未加密的,并用[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传递的对称密钥)。

最新更新