Шифровальщик файлов

Название Enigma
Баллы от 4 до 9
Командная?

Disclamer!

Чтобы не было недопониманий, графическая часть задачи делается на WPF+Caliburn.Micro (можно взять любой MVVM-фреймворк на ваше усмотрение). При невыполнении этого условия - максимум за задачу составит 6 баллов. Я итак верю, что вы можете наиндокодить эту задачу в codebehind, а не через MVVM. Задача - научиться делать правильно. Кто не осилил дисклеймер - я не виноват.

Описание

Написать шифровщик, который умеет зашифровывать и расшифровывать файлы алгоритмами AES, DES, RC2, Rijndael. За консольную версию программы вы получите 6 баллов, а за усложненную - 9.

Пример использования

  1. Запуск crypto.exe encrypt file.txt rc2 output.bin
  2. Программа работает, выдавая в output.bin зашифрованный двоичный файл, и кладет рядом с этим файлом файл file.key.txt, в который помещает IV (initialization vector) и Key в формате base64
  3. Запуск crypto.exe decrypt output.bin rc2 file.key.txt file.txt
  4. Программа работает, читая ключи из file.key.txt и расшифровывая output.bin в изначальный file.txt

Подсказки

Не реализовывайте алгоритмы самостоятельно – реализация есть в .NET Framework, в пространстве имен System.Security.Cryptography Минимизируйте количество кода в Main.

Усложнение:

Сделайте WPF-фронтенд. То есть GUI-обертку для всего, что работает через консоль. Не работайте с WPF напрямую – ознакомьтесь с MVVM-фреймворком Caliburn.Micro.

Конечной целью является вставка пунктов меню расшифровки-зашифровки сюда:

Image of Yaktocat