Advertisement
krasi1105

Spygram

May 15th, 2017
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.49 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6.  
  7. public class Program
  8. {
  9.     public static void Main()
  10.     {
  11.         var privateKey = Console.ReadLine();
  12.         var messages = new List<Message>();
  13.         var rgx = new Regex(@"^TO: ([A-Z]+); MESSAGE: (.+);$");
  14.         string input;
  15.         while (!(input = Console.ReadLine()).Equals("END"))
  16.         {
  17.             var m = rgx.Match(input);
  18.             if (m.Success)
  19.                 messages.Add(new Message(m.Groups[1].Value, m.Groups[2].Value));
  20.         }
  21.        
  22.         var sorted = messages
  23.         .OrderBy(m => m.Sender);
  24.         foreach (var message in sorted)
  25.         {
  26.             var encrypted = Message.Encrypt(message, privateKey);
  27.             Console.WriteLine(encrypted);
  28.         }
  29.     }
  30. }
  31.  
  32. public class Message
  33. {
  34.     public Message(string sender, string content)
  35.     {
  36.         Sender = sender;
  37.         Content = content;
  38.     }
  39.    
  40.     public string Sender { get; }
  41.     public string Content { get; }
  42.    
  43.     public static string Encrypt(Message message, string privateKey)
  44.     {
  45.         var toEncrypt = $"TO: {message.Sender}; MESSAGE: {message.Content};";
  46.         var result = new StringBuilder(toEncrypt.Length);
  47.         var keyIndex = 0;
  48.         foreach (var letter in toEncrypt)
  49.         result.Append((char) (letter + privateKey[keyIndex++ % privateKey.Length] - 48));
  50.        
  51.         return result.ToString();
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement