/// <summary> /// Initializes a new instance of the <see cref="GuidEx" /> struct. /// </summary> /// <param name="s">The s.</param> /// <param name="nameSpace">The name space.</param> public GuidEx(string s, string nameSpace) { Guid nameSpaceId; if (!Guid.TryParse(nameSpace, out nameSpaceId)) { nameSpaceId = new GuidEx(nameSpace, Guid.Parse(NameSpaceKeyName)); } var sha1 = Security.Cryptography.SHA1.Create(); var bytes = Encoding.Default.GetBytes(s); var bs = new List <byte>(nameSpaceId.ToByteArray()); bs.AddRange(bytes); var hash = sha1.ComputeHash(bs.ToArray()); var data1 = BitConverter.ToInt32(hash, 0); var data2 = BitConverter.ToInt16(hash, 4); var data3 = (short)((short)(BitConverter.ToInt16(hash, 6) & 0x0FFF) | 0x5000); _data4_0 = (byte)((byte)(hash[8] & 0x3F) | 0x80); _data4_1 = hash[9]; _data4_7 = hash[15]; _data4_6 = hash[14]; _data4_5 = hash[13]; _data4_4 = hash[12]; _data4_3 = hash[11]; _data4_2 = hash[10]; _data3 = data3; _data2 = data2; _data1 = data1; }
static void Main() { const string g = "065afd82-c667-4d85-9949-f9db33056ef0"; var l = new Guid(g); Console.WriteLine(l.ToString()); var ex = new System.GuidEx(l); Console.WriteLine(ex.ToString()); Console.WriteLine(ex.Version); var ex2 = new System.GuidEx("Potatis", "Månsken"); Console.WriteLine(ex2.ToString()); Console.WriteLine(ex2.Version); var ex3 = new System.GuidEx(g); Console.WriteLine(ex3.ToString()); Console.WriteLine(ex3.Version); var ex4 = new System.GuidEx(g + g); Console.WriteLine(ex4.ToString()); Console.WriteLine(ex4.Version); Console.ReadKey(); }