forked from jasonbay13/MCForge-Vanilla-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Permalink.cs
71 lines (60 loc) · 2.03 KB
/
Permalink.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
Copyright 2011 MCForge
Author: fenderrock87
Dual-licensed under the Educational Community License, Version 2.0 and
the GNU General Public License, Version 3 (the "Licenses"); you may
not use this file except in compliance with the Licenses. You may
obtain a copy of the Licenses at
http://www.opensource.org/licenses/ecl2.php
http://www.gnu.org/licenses/gpl-3.0.html
Unless required by applicable law or agreed to in writing,
software distributed under the Licenses are distributed on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the Licenses for the specific language governing
permissions and limitations under the Licenses.
*/
using System;
using System.Net.NetworkInformation;
using System.Text;
using System.Security.Cryptography;
namespace MCForge
{
public static class Permalink
{
public static Uri URL;
public static string UniqueHash
{
get
{
return GenerateUniqueHash();
}
}
private static string GenerateUniqueHash()
{
string macs = "";
// get network interfaces' physical addresses
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
PhysicalAddress pa = ni.GetPhysicalAddress();
macs += pa.ToString();
}
// also add the server's current port, so that one machine may run multiple servers
macs += Server.port.ToString();
// generate hash
using (var md5 = new MD5CryptoServiceProvider())
{
byte[] originalBytes = Encoding.ASCII.GetBytes(macs);
byte[] hash = md5.ComputeHash(originalBytes);
// convert hash to hex string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
// the the final hash as a string
return sb.ToString();
}
}
}
}