我在 1996 年用 2 1/2 天编写了数字加密标准 (DES) 的实现,以非常彻底地理解这种特殊的(现已过时的)对称加密算法为序,更不用说 VHDL 了。我还使用小 C 程序来生成部分 VHDL 代码(如测试台的测试向量,S Boxes)。DES 最初需要在硬件中实现,在 RTL 级别的一项 IBM 专利中进行了描述,而在 FIPS Pub 46 中以中立的方式记录了参考实现。
我的实现(可用作参考)不是直接符合综合条件的,它具有需要删除的 RTL 级 I/O 缓冲区。它还使用配置在四个其他相同的字节寄存器对 R 和 L 中指定 S 盒作为一个组件。我之前已经将它们与尚未支持配置的 VHDL 分析器/模拟器一起使用。
分发的最大部分是关于 DES 排列的 PDF 文档,它具有 8 位接口,是初始排列、反向初始排列和排列选择 1 的 8 根线的转置(添加了第 9 根线。还有 E排列非常规则。唯一的不规则排列是 Permuted Choice 2 和 P 排列。当然还有 S 盒。
在最简单的实现中,DES 可以在大约 4,700 与非门等效项中实现,并且有具有预期结果的测试向量。
请参阅Dropbox 上的vhdl_des.tar.gz和des.test(测试向量)。
还有一个浮动的 javascript DES 实现已被禁用,以防止它在教育环境中使用任意键。捕获页面,您可以实际撤消允许它使用任意键的禁用。请参阅JavaScript DES 示例。这里的价值在于展示每一轮的内部价值。
[可以在JS-DES.html http://dpades.googlecode.com/svn/trunk/simu_js/JS-DES.html,项目主页 ( http: //code.google.com/p/dpades/)说它是 GPLv2。]
您可以使用 javascript 实现来查找用于对实现进行故障排除的舍入值。
如果它对您来说不够复杂,请尝试 Triple DES。