DB
dburriss/PIIHide
An experimental library for marking and encrypting properties on objects that contain personally identifiable information.
PII Hide
This is an experimental library that aims to make it simple to encrypt/decrypt specific properties on an object.
Features
- Easy marking of personally identifiable information with the
PIIAttribute - Symmetric encryption of properties using AES
- Idempotent encryption and decryption
- Support for
string,DateTime, andDateTimeOffsetproperties contained in a complex class - Support for nested properties of complex type
Usage
C#
Although the library is written in F#, it does provide extension methods OR access via a static Encryption class that respects the C# naming conventions.
Mark the sensitive information with the PIIAttribute.
using PIIHide;
//...
public class Person
{
public long Id { get; set; }
[PII]
public string Name { get; set; }
[PII]
public Address Address { get; set; }
}
public class Address
{
[PII]
public string Street { get; set; }
[PII]
public string PostalCode { get; set; }
public string Country { set; get; }
}Then generate a key and call Encrypt/Decrypt on an instance of your class.
using PIIHide;
using PIIHide.CSharp.Extensions;
//...
var key = PII.GenerateKey();
var person = MakePerson();
person.Encrypt(key);
person.Decrypt(key);OR
using PIIHide;
using PIIHide.CSharp;
//...
var key = PIIEncryption.GenerateKey();
var person = MakePerson();
PIIEncryption.Encrypt(key, person);
PIIEncryption.Decrypt(key, person);See the sample for what this would look like.
F#
let person = aPerson()
let key = aKey()
PII.hide key person |> ignore
PII.show key person |> ignore