using System.Security.Cryptography;
public static void Main()
Console.WriteLine(NewV8("at.permedio.pgx","drugs.products",255,12));
public static Guid NewV8(string domain, string path, byte language, long id)
using var sha1 = SHA1.Create();
var domainHash = sha1.ComputeHash(Encoding.UTF8.GetBytes(domain));
var pathHash = sha1.ComputeHash(Encoding.UTF8.GetBytes(path));
var idBytes = BitConverter.GetBytes(id).Reverse().ToArray();
var bytes = new byte[16];
domainHash.Take(4).ToArray().CopyTo(bytes, 0);
pathHash.Take(2).ToArray().CopyTo(bytes, 4);
bytes[6] = (byte)((8 << 4) | (language >> 4));
bytes[7] = (byte)((language << 4) | (idBytes[0] >> 4));
bytes[8] = (byte)((1 << 7) | (idBytes[0] << 4));
idBytes.Skip(1).ToArray().CopyTo(bytes, 9);