70 lines
2.0 KiB
C#
70 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
|
|
namespace mononucleosis_pro
|
|
{
|
|
class Keygen
|
|
{
|
|
public const int SUBLIME_TEXT = 0;
|
|
public const int VISUAL_STUDIO_CODE = 1;
|
|
private static readonly byte[] VSCGUIDBytes = new byte[] { 111, 15, 51, 253, 65, 63, 29, 66, 159, 229, 222, 116, 45, 12, 84, 192 };
|
|
private static readonly MD5 MD5 = MD5.Create();
|
|
private static readonly Guid VSCGUID = new Guid(VSCGUIDBytes);
|
|
|
|
public string Generate(int type, string email)
|
|
{
|
|
switch (type)
|
|
{
|
|
case SUBLIME_TEXT:
|
|
return generateSublime(email);
|
|
|
|
case VISUAL_STUDIO_CODE:
|
|
return generateVSCode(email);
|
|
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
private string generateSublime(string input)
|
|
{
|
|
string output = BitConverter.ToString(MD5.ComputeHash(Encoding.UTF8.GetBytes(input))).Replace("-", "").Substring(0, 25).ToLower();
|
|
|
|
return licenseFormat(output);
|
|
}
|
|
|
|
private string generateVSCode(string input)
|
|
{
|
|
input = VSCGUID.ToString() + input;
|
|
|
|
string output = BitConverter.ToString(MD5.ComputeHash(Encoding.UTF8.GetBytes(input))).Replace("-", "").Substring(0, 25).ToLower();
|
|
|
|
return licenseFormat(output);
|
|
}
|
|
|
|
private string licenseFormat(string input)
|
|
{
|
|
string output = "";
|
|
|
|
for (int i = 0; i <= input.Length + 1; i++)
|
|
{
|
|
if (i % 5 == 0)
|
|
{
|
|
if (i + 5 < input.Length)
|
|
{
|
|
output += input.Substring(i, 5) + "-";
|
|
}
|
|
else
|
|
{
|
|
output += input.Substring(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
return output;
|
|
}
|
|
}
|
|
}
|