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
