菲斯特尔 这是一个实现Feistel密码以“几乎”保留格式的加密的Golang库。 “几乎”是因为在使用实现的平衡版本时,我们需要输入字符串的长度均匀。 在这种情况下,将保留长度,否则输出将长一个字符。 动机 该库的主要目的不是提供安全的加密方案,而是提供安全的混淆工具。 形式描述 该库基于描述的Feistel密码的概念进行操作: Feistel网络分为几个回合或步骤。 在其平衡版本中,网络将数据分成两个大小相同的部分。 在每一轮中,将交换两个块,然后将其中一个块与另一个块的转换版本合并。 一半的数据用密钥编码,然后使用XOR操作将该操作的结果添加到另一半数据中。 然后在下一个回合中,我们进行相反的操作:将后半部分加密,然后将其异或为前半部分,只不过我们使用先前加密的数据。 下图显示了数据流( 表示XOR操作)。 每个回合使用中间密钥,通常通过称为密钥调度的一代从主密钥中获取密钥。 使