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

Last change on this file since 2412 was 2412, checked in by Sven Rech, 10 years ago

GetID depence now on cpuid and username

File size: 2.1 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                cpuids += mob.Properties["processorID"].Value.ToString();
28            }
29
30
31            MD5 md5 = new MD5CryptoServiceProvider();
32            byte[] idBytes = md5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(username + cpuids));
33            long ID = BitConverter.ToInt64(idBytes, 0);
34            ID = Math.Abs(ID);
35
36            return ID;
37        }
38
39        /// <summary>
40        /// Returns an identifier that depends on the MAC addresses of this system
41        /// </summary>       
42        private static string GetMacIdentifier()
43        {
44            string MacID = "";
45            ManagementClass MC = new ManagementClass("Win32_NetworkAdapter");
46            ManagementObjectCollection MOCol = MC.GetInstances();
47            foreach (ManagementObject MO in MOCol)
48                if (MO != null)
49                    if (MO["MacAddress"] != null)
50                        MacID += MO["MACAddress"].ToString();
51            return MacID;
52        }
53
54        /// <summary>
55        /// Returns the (not unique) host name of this computer.
56        /// </summary>
57        /// <returns></returns>
58        public static string GetHostName()
59        {
60            return System.Net.Dns.GetHostName();
61        }
62    }
63}
Note: See TracBrowser for help on using the repository browser.