Как зашифровать элементы XML? - PullRequest
       16

Как зашифровать элементы XML?

1 голос
/ 08 сентября 2011

Я автоматически создал класс (vb.net) из схемы xsd (с помощью xsd.exe).Я заполняю свойства объектов данными, сериализую объект в xml и сохраняю xml в строке.В моем XML я должен зашифровать некоторые элементы.Каков наилучший способ сделать это?

Можно ли зашифровать свойства моих объектов перед сериализацией объекта в xml?В моей документации к схеме xsd говорится, что все зашифрованные значения (элементы) должны быть строковыми, но когда я автоматически генерирую класс из схемы xsd, номер рождения устанавливается на дату, а не на строку…?И номер рождения является частью элементов, которые я должен зашифровать.Я хочу использовать PKI для шифрования симметричного ключа, который я хочу использовать для шифрования элементов xml.

Может кто-нибудь помочь мне с этим?Спасибо!

1 Ответ

1 голос
/ 08 сентября 2011

Одним из простых решений может быть предоставление двух версий каждого свойства, зашифрованных и незашифрованных, и пометить все незашифрованные версии с помощью [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).

...