ExtendedXmlSerializerを使用できます。あなたが暗号化される必要があるプロパティを持つクラスを持っている場合は :
public class Person
{
public string Name { get; set; }
public string Password { get; set; }
}
あなたは、インタフェースIPropertyEncryptionを実装する必要があります。たとえば、Base64エンコーディングが表示されますが、現実世界では、より安全なものを使用する方が良いと考えられます。 RSA。:あなたはプロパティを暗号化するかを指定する必要がPersonクラスの構成では
public class Base64PropertyEncryption : IPropertyEncryption
{
public string Encrypt(string value)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(value));
}
public string Decrypt(string value)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(value));
}
}
:
public class PersonConfig : ExtendedXmlSerializerConfig<Person>
{
public PersonConfig()
{
Encrypt(p => p.Password);
}
}
その後、あなたはあなたのPersonConfigクラスとIPropertyEncryptionの実装を登録する必要があります。マニュアルには、Autofacを使用した設定が記載されています。シンプルな構成があります:
var toolsFactory = new SimpleSerializationToolsFactory();
// Register your config class
toolsFactory.Configurations.Add(new PersonConfig());
// If you want to use property encryption you must register your implementation of IPropertyEncryption, e.g.:
toolsFactory.EncryptionAlgorithm = new Base64PropertyEncryption();
ExtendedXmlSerializer serializer = new ExtendedXmlSerializer(toolsFactory);
次にあなたがオブジェクトをシリアル化することができます
var obj = new Person {Name = "John", Password = "Ab238ds2"};
var xml = serializer.Serialize(obj);
あなたのXMLは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<Person type="ExtendedXmlSerialization.Samples.Encrypt.Person">
<Name>John</Name>
<Password>QWIyMzhkczI=</Password>
</Person>
ExtendedXmlSerializerは、他の多くの便利な機能を備えています。
- 標準から非直列化xmlプロパティインタフェース
- シリアライズ循環参照と参照してXmlSerializerを
- シリアライゼーションクラスID
- XML
- プロパティの暗号化の古いバージョン
- カスタム・シリアライザ
ExtendedXmlSerializerのデシリアライズは、.NET 4.5をサポートしています。ネットコア。 WebApiとAspCoreを統合することができます。
サイドノート:なぜパスワード自体を保存したいですか?あなたは塩とハッシュを作り、それらを代わりに保管することはできませんか?それらをもちろん暗号化することは、おそらく良いアイデアです... – Jeroen
パスワードがすでにハッシュされていないのはなぜですか?暗号化されたプレーンテキストのパスワードを使用していないと教えてください。 – Stephen
@Jeroen塩漬けされたパスワードハッシュを暗号化するのはどうしてですか?全体のポイントは、あなたがそれを塩にしてひどいハッシュアルゴリズムを使用しない限り、誰かがそれを受け取った場合、それほど気にしないことです。 – Servy