Skip to content

Files

Latest commit

 

History

History

EF_StringEncryptPropertyValues

About

EF Core provides methods to transform one type into another. Most common use is with enumerations (see using Enum with EF Core) while many other transformations are possible.

In this article a string property Password is encrypted when saving to a database table and decrypted when reading from the database table.

Microsoft simple starter code sample for HasConversion which in this case takes a string and reverses the string and stores in the table then read back reverses the value back to what was entered.

Original conversion

Which allows a developer to work from a simple example to implement their own logic while in this project a NuGet package is used as per below.

modelBuilder.Entity<User>().Property(e => e.Password).HasConversion(
    v => new string(v.Reverse().ToArray()),
    v => new string(v.Reverse().ToArray()));

Current conversion

The conversion here is done with NuGet package Inferno crypto library, Once configured as shown below the conversion is seamless.

Figure2

inferno crypt library

While many developers are aware enough not to roll their own crypto, they either pick the wrong approach, screw up the implementation, or both. Many of these libraries focus on providing as many crypto primitives as possible, which is a huge disservice.

I highly recommend taking time to read the docs.

Note Before running this project the database must be created with the script under the folder Scripts