private const string ConfigVersioningConstant = "GenericValueSource";
public static void Main()
var agentID = "6afd01f8-e78e-4209-9913-ed30d19798e1";
var valueSourceID = "Machine1";
var sensorID = "OperatingIndicator";
var valueMetadataId = GuidGenerator.Deterministic(agentID, ConfigVersioningConstant, valueSourceID, sensorID);
Console.WriteLine($"ValueMetadataId: {valueMetadataId}");
public static class GuidGenerator
public static Guid Deterministic(params string[] identifiers)
string sourceString = string.Concat(identifiers);
byte[] stringbytes = Encoding.UTF8.GetBytes(sourceString);
using var sha = System.Security.Cryptography.SHA512.Create();
byte[] hashedBytes = sha.ComputeHash(stringbytes);
Array.Resize(ref hashedBytes, 16);
return new Guid(hashedBytes);