Inspired by he-dev/reusable:FingerprintBuilder
dotnet add package FingerprintBuilderDeclare class:
class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
}Configure Func:
var sha256 = FingerprintBuilder<User>
.Create(SHA256.Create())
.For(p => p.FirstName)
.For(p => p.LastName)
.Build();Get hash:
var user = new User { FirstName = "John", LastName = "Smith" };
var hash = sha256(user).ToLowerHexString();
Console.WriteLine(hash); // 62565a67bf16004038c502eb68907411fcf7871c66ee01a1aa274cc18d9fb541BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.302
[Host] : .NET 10.0.10 (10.0.10, 10.0.1026.32716), X64 RyuJIT x86-64-v3
DefaultJob : .NET 10.0.10 (10.0.10, 10.0.1026.32716), X64 RyuJIT x86-64-v3
| Method | Mean | Error | StdDev | Median | Gen0 | Allocated |
|---|---|---|---|---|---|---|
| MD5_Model_To_Hex | 1.145 μs | 0.0038 μs | 0.0032 μs | 1.144 μs | 0.0725 | 1.21 KB |
| SHA1_Model_To_Hex | 1.166 μs | 0.0078 μs | 0.0070 μs | 1.166 μs | 0.0820 | 1.37 KB |
| SHA256_Model_To_Hex | 1.381 μs | 0.0071 μs | 0.0066 μs | 1.382 μs | 0.1087 | 1.8 KB |
| SHA512_Model_To_Hex | 2.287 μs | 0.0068 μs | 0.0060 μs | 2.287 μs | 0.1831 | 2.99 KB |
All contents of this package are licensed under the MIT license.