0

这是一个比我之前的问题更广泛但相关的问题。

我想在 Ruby 中实现老式的加密系统,例如ADFGVXVIC 密码等,主要是为了好玩。这些密码系统建立在更通用的系统之上,如替换(单字母,如 Caesar 或多字母,如 Vigenere)和转置(简单,双)。我的问题实际上是如何创建类层次结构来处理密码系统和密钥。

像 Vigenere < Substitution < SimpleCipher 之类的东西?钥匙呢?一些替换键在使用前被压缩(“ARABESQUE”变成“ARBESQU”),而大多数转置键没有,依此类推。

现在,我有一个非常基本的设计文档(我说basic),我想了想,我似乎找不到令人满意的方法,所以我来这里是为了你的智慧。

实现将在 Ruby 中进行,但除非设计必须使用多重继承,否则它与 Ruby 本身无关。

Mercurial 中的概念证明(尚未可运行且可能错误)。

4

1 回答 1

2

想想类签名。每个加密算法都有两种方法,encrypt()decrypt(),并且您必须考虑块密码和流密码(即,许多算法需要固定大小的块中的数据。)

但是,一旦您低于该级别,这些方法将看起来完全不同,并且在该级别上没有很多共享行为。

所以我怀疑你想要的是更多的模块或混合结构,而不是继承。仅仅因为您有分类法,并不意味着分类法应该是继承层次结构。

关于这类事情有很多很好的讨论;找谈是否Ostrich < Bird。看,鸟fly()……除了鸵鸟。

于 2009-02-16T15:35:42.693 回答