using System.Security.Cryptography;
public static class GuidUtility
private const int GuidByteSize = 16;
private const int GuidVersion = 5;
private static readonly HashAlgorithm HashAlgorithm = SHA1.Create();
private static readonly Guid Namespace = new Guid("6ba7b810-9dad-11d1-80b4-00c04fd430c8");
public static Guid GenerateGuid(Uri source)
var namespaceByte = Namespace.ToByteArray();
SwapByteOrder(namespaceByte);
var sourceByte = Encoding.UTF8.GetBytes(source.ToString());
var combine = namespaceByte.Concat(sourceByte);
var hash = HashAlgorithm.ComputeHash(combine.ToArray());
var truncatedHash = new byte[GuidByteSize];
Array.Copy(hash, truncatedHash, truncatedHash.Length);
truncatedHash[6] = (byte)((truncatedHash[6] & 0x0F) | (GuidVersion << 4));
truncatedHash[8] = (byte)((truncatedHash[8] & 0x3F) | 0x80);
SwapByteOrder(truncatedHash);
return new Guid(truncatedHash);
private static void SwapByteOrder(byte[] guid)
private static void SwapBytes(byte[] guid, int left, int right)
guid[left] = guid[right];
public static void Main()
var uri1 = new Uri("https://reamaze-prod.s3.amazonaws.com/variants/kuoixhw84k8wixtt01qyuobg9qwf/026a4da4defb650ee0dde7786131efb4c9c41140a25477b018edd6fa5031c1e8?response-content-disposition=inline%3B%20filename%3D%22lion_stalking.jpg%22%3B%20filename%2A%3DUTF-8%27%27lion_stalking.jpg&response-content-type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJPYPX6P5IUU72ROA%2F20220114%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220114T203830Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=190209638f53b2f2a937fa1c449390e2d6654b02dfd169d87b1215d105f37b6a");
Console.WriteLine(GuidUtility.GenerateGuid(uri1));
var uri2 = new Uri("https://reamaze-prod.s3.amazonaws.com/variants/5dedh196rcu6xawcl2cg5zqgn7t8/026a4da4defb650ee0dde7786131efb4c9c41140a25477b018edd6fa5031c1e8?response-content-disposition=inline%3B%20filename%3D%22female_leopard_1.JPG%22%3B%20filename%2A%3DUTF-8%27%27female_leopard_1.JPG&response-content-type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJPYPX6P5IUU72ROA%2F20220114%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220114T200840Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c9268855834c84b2772d08f1649f65095c84e8a9a450268451bf37a887b72ee5");
Console.WriteLine(GuidUtility.GenerateGuid(uri1));