Feedback

C# - Cäsar-Verschlüsselung

Veröffentlicht von am 13.11.2015
(2 Bewertungen)
Verschlüsselung-Methoden ,damit keine dritte Person den Inhalt liest
Snippet in VB übersetzen
namespace Caesar_Verschluesselung
{
    class CaesarVerschluesselung
    {
      public string Verschluesseln(string eingabe,int schluessel)
        {
            string ausgabe = "";

            for (int i = 0; i < eingabe.Length; i++)
            {
                char c = eingabe[i];
                ausgabe +=   (char)(c + schluessel);
            }

            return ausgabe;
        }

        public string Enschluesseln(string eingabe,int schluessel)
        {

            string ausgabe = "";

            for (int i = 0; i < eingabe.Length; i++)
            {
                char c = eingabe[i];
                ausgabe += (char)(c - schluessel);
            }

            return ausgabe;
        }
    }
}
Abgelegt unter Cäsar, Verschlüsslung, Geheime-Sprache.

2 Kommentare zum Snippet

Martin Stühmer schrieb am 17.11.2015:
Hallo TA,

du solltest nie darauf vertrauen, dass deine Methoden/Funktionen korrekt verwendet werden. Aktuell ist hier noch ein erhebliches Fehlerpotenzial.

1. Du überprüfst nicht ob du überhaupt eine korrekte Eingabe erhälst.
Dies kannst du relativ einfach lösen mit dem folgenden Zeile.
if (string.IsNullOrWhiteSpace(eingabe)) return string.Empty;


2. Dein Parameter schluessel ist sehr ungenau und relativ einfach nach zu verfolgen. Da jedes Zeichen mit einem festen nummerischen Wert verschoben wird. Dies kannst du lösen, in dem du einen Schlüssel String mit übergibst.
Hier ein Beispiel:
        public static string CeasarDecode(string value, string ceasarKey)
{
if (string.IsNullOrWhiteSpace(value)) return string.Empty;
if (string.IsNullOrWhiteSpace(ceasarKey)) return value;
StringBuilder result = new StringBuilder();
int index = 0;

foreach (var c in value.ToCharArray())
{
var charCode = Convert.ToInt32(c) - Convert.ToInt32(ceasarKey[index]);

if (charCode < 0)
charCode += 255;
result.Append(Convert.ToChar(charCode));

index += 1;
if (index > ceasarKey.Length - 1)
index = 0;
}

return result.ToString();
}


2.1. schluessel = 0, brauchst du nicht weiter bearbeiten und kannst direkt eingabe zurückgeben
if (schluessel.Equals(0)) return eingabe;


Gruß Martin
I_CU_IN_HELL schrieb am 17.11.2015:
Bei z bzw Z kommt bei(schlüssel 1) { bzw [ und nicht wie bei der Cäsar-Verschlüsselung kommen müsste a bzw A.
 

Logge dich ein, um hier zu kommentieren!

Ähnliche Snippets