Hallo liebe User,
habe vor einigen Tagen ein Programm begonnen was ein Lizenz System hat.
Nun wollte ich einige Codes mit Base64 verschlüsseln, das war mir aber zu leicht knackbar.
Da habe ich meinen eigenen "Algorithmus" entwickelt. Dieser setzt einfach ein paar Zeichen zwischen den String und Entschlüsselt diesen später wieder.
Ist zwar auch leicht knackbar, aber noch nicht bekannt
Die Encryption Klasse:
PHP
class Encryption
{
// Der Generierte Key zum Ãœberprüfen
public string Key;
// Der verschlüsselte String
public string encryptedKey;
// Der entschlüsselte String
public string decryptedKey;
/// <summary>
/// Encryption Konstruktor
/// </summary>
public Encryption()
{
Console.WriteLine("[Encryption] > Starte & Lade die Encryption Klasse");
Key = RandomString(5);
}
/// <summary>
/// Encryption Destruktor
/// </summary>
~Encryption() { }
/// <summary>
/// Generiert einen Random String aus Chars
/// </summary>
/// <param name="Length">Die Länge des Strings</param>
/// <returns>Gibt einen generierten zufalls string zurück</returns>
public static string RandomString(Int64 Length)
{
Random rnd = new Random();
StringBuilder Temp = new StringBuilder();
for (Int64 i = 0; i < Length; i++)
{
Temp.Append(Convert.ToChar(((byte)rnd.Next(254))).ToString());
}
return Temp.ToString();
}
/// <summary>
/// Verschlüsselt einen String in einen unlesbaren Code
/// </summary>
/// <param name="data">Der String</param>
public void encrypt(string data)
{
Console.WriteLine("[Encryption] > Verschlüssle den String [{0}]..., bitte warten.", data);
foreach (char str in data)
{
encryptedKey += str + Key;
}
Console.WriteLine("[Encryption] > Key: {0}", encryptedKey);
}
/// <summary>
/// Entschlüsselt einen nicht lesbaren String in einen lesbaren String
/// </summary>
/// <param name="data">Der EncryptedString</param>
public void decrypt(string data)
{
int pos = data.IndexOf(Key);
int count = 6;
decryptedKey += data.Substring(0, pos);
while (count < encryptedKey.Length)
{
if (count == 24)
{
decryptedKey += data.Substring(count, pos);
count = count + 6;
}
else
{
decryptedKey += data.Substring(count, pos);
count = count + 6;
}
}
Console.WriteLine("[Decryption] > Key: {0}", decryptedKey);
}
}
Alles anzeigen
Anwendung in der Praxis:
PHP
Encryption en = new Encryption();
en.encrypt("testdata");
Console.WriteLine();
en.decrypt(en.encryptedKey);
Console.ReadLine();
Wie gesagt, ist nichts großes aber schon ein Anfang.
Man kann ja schließlich nicht ebend einen guten Verschlüsselungs Algorithmus herbeizaubern.