source: trunk/CrypPluginBase/Miscellaneous/UniqueIdentifier.cs @ 2430

Last change on this file since 2430 was 2430, checked in by schwittmann, 10 years ago

Fixed exception on systems where no processorId is available

File size: 2.2 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Security.Principal;
6using System.Security.Cryptography;
7using System.Management;
8
9namespace Cryptool.PluginBase.Miscellaneous
10{
11    public class UniqueIdentifier
12    {
13        /// <summary>
14        /// Returns a globally unique identifier for a user on a computer.
15        /// </summary>
16        /// <returns></returns>
17        public static Int64 GetID()
18        {
19            string username = WindowsIdentity.GetCurrent().Name;
20            //string mac = GetMacIdentifier();
21
22            ManagementClass man = new ManagementClass("win32_processor");
23            ManagementObjectCollection moc = man.GetInstances();
24            string cpuids = "";
25            foreach (ManagementObject mob in moc)
26            {
27                var cpuid = mob.Properties["processorID"].Value;
28                if (cpuid != null)
29                {
30                    cpuids += cpuid.ToString();
31                }
32            }
33
34
35            MD5 md5 = new MD5CryptoServiceProvider();
36            byte[] idBytes = md5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(username + cpuids));
37            long ID = BitConverter.ToInt64(idBytes, 0);
38            ID = Math.Abs(ID);
39
40            return ID;
41        }
42
43        /// <summary>
44        /// Returns an identifier that depends on the MAC addresses of this system
45        /// </summary>       
46        private static string GetMacIdentifier()
47        {
48            string MacID = "";
49            ManagementClass MC = new ManagementClass("Win32_NetworkAdapter");
50            ManagementObjectCollection MOCol = MC.GetInstances();
51            foreach (ManagementObject MO in MOCol)
52                if (MO != null)
53                    if (MO["MacAddress"] != null)
54                        MacID += MO["MACAddress"].ToString();
55            return MacID;
56        }
57
58        /// <summary>
59        /// Returns the (not unique) host name of this computer.
60        /// </summary>
61        /// <returns></returns>
62        public static string GetHostName()
63        {
64            return System.Net.Dns.GetHostName();
65        }
66    }
67}
Note: See TracBrowser for help on using the repository browser.