erweiterung

This commit is contained in:
2023-03-23 15:55:13 +01:00
parent 33e49f846c
commit 09c8eab938
39 changed files with 1167 additions and 1 deletions

View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace BeispielCesaChiffre
{
public class Alphabet
{
//Ein Array welches das Alphabet in Großbuchstaben darstellt
//Jeder Grp0buchstabe hat eine Indexnummer
//Position eines Großbuchstabens im tatsächlichen Alphabet ist Indexnummer +1
private char[] alphabet = new[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
/// <summary>
/// Gibt die Position eines Großgeschreibenen Buchstanbens (ASCII) im tatsächlichen Alphabet zurück
/// </summary>
/// <param name="x">Großgeschreibener Character</param>
/// <returns>Position im Alphabet</returns>
public int PositionImTatsächlichenAlphabetLokalisieren(char x)
{
for (int i = 0; i < alphabet.Length; i++)
{
if (x == alphabet[i])
{
return i + 1;
}
}
return 0;
}
public char GetBuchstabenDerPositionImTatsächlichemAlphabet(int x)
{
if (x == 0)
{
return this.alphabet[x];
}
return this.alphabet[x - 1];
}
}
}

View File

@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeispielCesaChiffre
{
internal class CaeserMaschine
{
//Um die Werte vom User zu holen (Klartext & Verscheibung)
private UserEingabe usereingabe = new UserEingabe();
//Um aus Zahlen Buchstaben zu machen und umgekert
private Alphabet alphabet = new Alphabet();
public void Verschlüsseln()
{
//Daten vom User holen
this.usereingabe.SetKlartext();
this.usereingabe.SetVerscheibung();
char[] klartextChars = this.usereingabe.GetKlartext().ToCharArray();
char[] verschlüsselteChars = new char[klartextChars.Length];
int verschiebung = this.usereingabe.GetVerscheibung();
for (int i = 0; i < klartextChars.Length; i++)
{
int[] klartextInts = new int[klartextChars.Length];
int[] verschlüsseltInts = new int[klartextChars.Length];
klartextInts[i] = this.alphabet.PositionImTatsächlichenAlphabetLokalisieren(klartextChars[i]);
verschlüsseltInts[i] = klartextInts[i] + verschiebung;
verschlüsseltInts[i] = verschlüsseltInts[i] % 52;
if (verschlüsseltInts[i] == 0)
{
verschlüsseltInts[i] = 52;
}
verschlüsselteChars[i] = this.alphabet.GetBuchstabenDerPositionImTatsächlichemAlphabet(verschlüsseltInts[i]);
}
string s = new string(verschlüsselteChars);
Console.WriteLine(s);
}
}
}

View File

@@ -0,0 +1,33 @@
using System.Threading.Channels;
namespace BeispielCesaChiffre
{
internal class Program
{
static void Main(string[] args)
{
//Console.WriteLine("Hello Wolrd");
//Beispiel Ceasar-Verschlüsselung
//Klartext Alphabet: ABDCEFGHIJKLMNOPQRSTUVFXYZ
//Um wieviel Stellen word verrückt: 3
//Verschlüsseltes Alphabet: DEFGHIJKLMNOPQRSTUVWXYZABC
//A B D C E F G H I J K L M N O P Q R S T U V W X Y Z
//D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
//Klartext: HALLOWELT
//Verschlüsselt: KDOORZHOW
//Klartext: HALLOWELT
//klartext: Fisch
//Verschlüsselt: ILVGK
//Klartext: FISCH
//Klartext: Computer
//Verschlüsselt: GRPSXWHU
//Klartext: COMPUTER
CaeserMaschine caeserMaschine = new CaeserMaschine();
caeserMaschine.Verschlüsseln();
}
}
}

View File

@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeispielCesaChiffre
{
public class UserEingabe
{
private int verschiebung;
private string? klartext;
public void SetVerscheibung()
{
Console.WriteLine("Um wievile Positionen soll das Alphabet verschoben werden?");
string? eingabe = Console.ReadLine();
this.verschiebung = Convert.ToInt32(eingabe);
}
public void SetKlartext()
{
Console.WriteLine("Welchen text wollen Sie verschlüsseln?");
string? eingabe = Console.ReadLine();
this.klartext = eingabe;
}
public int GetVerscheibung()
{
return this.verschiebung;
}
public string? GetKlartext()
{
return this.klartext;
}
}
}