Skip to content

An experimental library for marking and encrypting properties on objects that contain personally identifiable information.

License

Notifications You must be signed in to change notification settings

dburriss/PIIHide

Repository files navigation

PII Hide

This is an experimental library that aims to make it simple to encrypt/decrypt specific properties on an object.

PiiHide on Nuget NuGet Status

Features

  • Easy marking of personally identifiable information with the PIIAttribute
  • Symmetric encryption of properties using AES
  • Idempotent encryption and decryption
  • Support for string, DateTime, and DateTimeOffset properties 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

About

An experimental library for marking and encrypting properties on objects that contain personally identifiable information.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages