erweiterung
This commit is contained in:
41
BeispielCesaChiffre/Alphabet.cs
Normal file
41
BeispielCesaChiffre/Alphabet.cs
Normal 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];
|
||||
}
|
||||
}
|
||||
}
|
||||
10
BeispielCesaChiffre/BeispielCesaChiffre.csproj
Normal file
10
BeispielCesaChiffre/BeispielCesaChiffre.csproj
Normal 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>
|
||||
43
BeispielCesaChiffre/CaeserMaschine.cs
Normal file
43
BeispielCesaChiffre/CaeserMaschine.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
33
BeispielCesaChiffre/Program.cs
Normal file
33
BeispielCesaChiffre/Program.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
35
BeispielCesaChiffre/UserEingabe.cs
Normal file
35
BeispielCesaChiffre/UserEingabe.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user