如何加密xml元素?

时间:2011-09-08 08:42:17

标签: xml serialization encryption xsd

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

在将对象序列化为xml之前,我可以加密对象属性吗?在我对xsd架构的文档中,它说所有加密值(元素)都必须是字符串,但是当我从xsd schem自动生成类时,Birth number设置为date而不是string ...?出生数是我必须加密的元素的一部分。 我想使用PKI来加密我想用来加密xml元素的对称密钥。

有人可以帮我这个吗? 谢谢!

1 个答案:

答案 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传递的对称密钥)。