Это более широкий вопрос, чем мой previous one, но связанный.Как бы вы разработали классы OO для обработки криптосистем и их ключей
Я хочу реализовать старую криптосистему в Ruby, такую как ADFGVX, VIC cipher и другие, в основном для развлечения. Эти криптосистемы построены на основе более общих систем, таких как замещение (моноалфавитный, такой как Цезарь или полиалфавитный, как Vigenere) и транспозиция (простая, двойная). Мой вопрос в том, как создать иерархию классов для обработки криптосистем и ключей.
Нечто вроде Vigenere < Замена < SimpleCipher или что-то еще? Как насчет ключей? Некоторые клавиши замещения конденсируются перед использованием («ARABESQUE» становится «ARBESQU»), тогда как большинство ключей транспонирования нет и так далее.
Прямо сейчас, у меня есть очень простой design doc (я сказал основного) и, как я думаю об этом, я не могу найти удовлетворительный способ для этого, так что я пришел сюда для вашей мудрости.
Реализация будет в Ruby, но если дизайн не должен использовать множественное наследование, это не касается самого Ruby.
Подтверждение концепции (еще не выполнимо и возможно неправильно) here в Mercurial.
Спасибо, Чарли, я всегда забываю о миксинах. Хотя в этом случае у меня такое чувство, что существует код, потому что строительные блоки в основном одинаковы для этих старых систем (суб, транс, шахматные доски и т. Д.). – Keltia
Yup, вполне может быть. Тогда вы можете подумать о том, нужен ли вам модуль, который предоставляет криптоалгоритмы и содержит или смешивает криптографические примитивы. Взгляните на язык Cryptol: http://galois.com/technology/communications_security/cryptol –