using System.Security.Cryptography;
public static void Main()
Console.WriteLine("Hello World2");
var card = new CardToRegisterDto() {
CreationDate = "2023-02-09T00:00:00+00:00",
ExpiryDate = "2031-02-09T00:00:00+00:00",
Pan = "0000000000000203059",
Certificate = "DCBB4AF2BCBD76B8C1D40906101FF588934A1080A75E586BACB63E643C840825616162F4208B87090C16352DC299437B3D24B958FBA3B922FE0A24316B215FA5B2395B75D5EC4984FFFF4532C0DD43C4999049BBEDCCF636CF02C7A5FD06415B198EFD580DF8A9941654A247C0E62A38F692B564430E778E955308B4FDB4BE8566951C0935E70DDF59EFB6A904C49FE1",
Checksum ="DD1D54EB5921B70029C963E8252B45740B2304CFD5032CF08A39AD6A1F8B3AC8",
ManufacturerState = "MANUFACTURED",
var checksum = Calc(card);
Console.WriteLine(checksum);
public static string Calc(CardToRegisterDto card)
var json = JsonConvert.SerializeObject(card);
System.Collections.Generic.Dictionary<string, string> dict = JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string, string>>(json);
var lookup = dict!.FirstOrDefault(x => x.Key.Equals(nameof(CardToRegisterDto.Checksum).ToLower(), StringComparison.OrdinalIgnoreCase));
Console.WriteLine(lookup.Key);
dict!.Remove(lookup.Key);
var orderedValues = dict!
.Where(element => element.Value != null)
.OrderBy(element => element.Key)
.Select(element => element.Value);
var str = string.Join(',', orderedValues);
public static string Generate(string str)
using var hash = SHA256.Create();
var byteArray = hash.ComputeHash(Encoding.UTF8.GetBytes(str));
var hex = Convert.ToHexString(byteArray);
public class CardToRegisterDto
public string CreationDate { get; set; }
public string ExpiryDate { get; set; }
public string? Pan { get; set; }
public string? Certificate { get; set; }
public string? Checksum { get; set; }
public string? Uid { get; set; }
public string ManufacturerState { get; set; } = "Manufactured";
public string? Cvv { get; set; }
public string? BoxNumber { get; set; }
public string? SerialNumber { get; set; }