1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Numerics;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace ConsoleApp5
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             //Het wachtwoord van de gebruiker
  15.             string ww = VraagWachtwoord();
  16.  
  17.             //De versleutelde key
  18.             string key = RandomKey(ww);
  19.  
  20.             //decodeer getallen voor het decoderen van de key
  21.             int[] asciiGetallen = ASCCI_Getallen(ww, key);
  22.  
  23.  
  24.             string gedecodeerdeWachtwoord = EnigmaDecoder(asciiGetallen, key, ww);
  25.  
  26.             Console.WriteLine("De key is: " + key);
  27.             Console.WriteLine("Het wachtwoord was: " + gedecodeerdeWachtwoord);
  28.             Console.ReadLine();
  29.  
  30.         }
  31.  
  32.         /// <summary>
  33.         ///
  34.         /// </summary>
  35.         /// <returns></returns>
  36.         private static string VraagWachtwoord()
  37.         {
  38.             Console.Write("Geef je wachtwoord: ");
  39.             return Console.ReadLine();
  40.         }
  41.  
  42.         /// <summary>
  43.         ///
  44.         /// </summary>
  45.         /// <param name="_ww"></param>
  46.         /// <returns></returns>
  47.         private static string RandomKey(string _ww)
  48.         {
  49.             string key = "";
  50.             Random objRandom = new Random();
  51.             for (int i = 0; i < _ww.Length; i++)
  52.             {
  53.                 key += (char)objRandom.Next(0, 128);
  54.             }
  55.             return key;
  56.         }
  57.  
  58.         /// <summary>
  59.         /// De methode genereert ascii getallen door ascii waarden bij elkaar op te tellen
  60.         /// </summary>
  61.         /// <param name="_ww">Het wachtwoord</param>
  62.         /// <param name="_key">De key</param>
  63.         /// <returns>retourneert versleutelde asciiwaarden </returns>
  64.         private static int[] ASCCI_Getallen(string _ww, string _key)
  65.         {
  66.             int[] asciiGetallen = new int[_ww.Length];
  67.             for (int i = 0; i < _ww.Length; i++)
  68.             {
  69.                 asciiGetallen[i] = _ww[i] + _key[i];
  70.             }
  71.             return asciiGetallen;
  72.         }
  73.  
  74.         /// <summary>
  75.         ///
  76.         /// </summary>
  77.         /// <param name="_asciiGetallen"></param>
  78.         /// <param name="_key"></param>
  79.         /// <param name="_ww"></param>
  80.         /// <returns></returns>
  81.         private static string EnigmaDecoder(int[] _asciiGetallen, string _key, string _ww)
  82.         {
  83.             string gedecodeerdeWachtwoord = "";
  84.             for (int i = 0; i < _ww.Length; i++)
  85.             {
  86.                 gedecodeerdeWachtwoord += ((char)(_asciiGetallen[i] - _key[i])).ToString();
  87.             }
  88.  
  89.             return gedecodeerdeWachtwoord;
  90.         }
  91.     }
  92. }