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

3 Lösungen Lösungen öffentlich
#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"

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
1x
vote_ok
von eulerscheZhl (5230 Punkte) - 13.02.2015 um 17:47 Uhr
Quellcode ausblenden C#-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben