C# :: Aufgabe #87 :: Lösung #1
3 Lösungen

#87
One-Time-Pad Verschlüsselung
Anfänger - C#
von SymTech
- 13.02.2015 um 14:04 Uhr
Schreibe eine Konsolenanwendung die einen beliebigen Text nach One-Time-Pad ver- und entschlüsseln kann. Es sollen nur Buchstaben, Zahlen und Sonderzeichen vorkommen (also nicht die ganze ASCII-Palette verwenden).
Nutzen sie dabei nur den Namespace:
"System"
Nutzen sie dabei nur den Namespace:
"System"
Konsolenausgabe:
Text codieren oder decodieren? (c/d)
c
Text: Train your programmer
Schlüssel: Das ist ein Schlüssel
Ergebnis:
&yX\oK=)[h?vJ}+4°EEy4
#1

von eulerscheZhl (5230 Punkte)
- 13.02.2015 um 17:47 Uhr

using System; namespace trainYourProgrammer { class MainClass { private static string alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789^!\"§$%&/()=?²³{[]}\\`´+*~#',.-;:_<>|° äöüÄÖÜß"; private static string encrypt(string text, string key) { if (text.Length > key.Length) return "Passwort zu kurz!"; char[] result = new char[text.Length]; for (int i = 0; i < text.Length; i++) { result [i] = alphabet [(alphabet.IndexOf (text [i]) + alphabet.IndexOf (key [i])) % alphabet.Length]; } return new string (result); } private static string decrypt(string text, string key) { if (text.Length > key.Length) return "Passwort zu kurz!"; char[] result = new char[text.Length]; for (int i = 0; i < text.Length; i++) { result [i] = alphabet [(alphabet.IndexOf (text [i]) - alphabet.IndexOf (key [i]) + alphabet.Length) % alphabet.Length]; } return new string (result); } public static void Main(string[] args) { string mode; do { Console.WriteLine ("Text codieren oder decodieren? (c/d)"); mode = Console.ReadLine (); } while (mode != "c" && mode != "d"); Console.Write ("Text: "); string text = Console.ReadLine (); Console.Write ("Schlüssel: "); string key = Console.ReadLine (); Console.WriteLine (mode == "c" ? encrypt (text, key) : decrypt (text, key)); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1