0

假设一个好的 C 程序员想从头开始编写给定对称密码的 VHDL 代码..任何人有任何想法或技巧来编写一个不太难的代码?这只是为了证明最后一年项目的概念。我已经使用 opencores 核心让 AES 成功运行。

基本上,我有一周的时间来编写一个 VHDL 实现。我在 C 语言方面会高于平均水平,但在 VHDL 方面并不出色,所以不要寻找太难的东西。正在阅读有关 EStream 密码的内容。如果有人能指出我正确的方向......谢谢!

PS 我担心的是,考虑到我工作的时间有限,我会解决一些在 FPGA 中实现起来太尴尬的问题!

4

2 回答 2

1

我在 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.gzdes.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。

于 2014-04-13T00:02:55.703 回答
0

HDL 需要与软件不同的开发思维方式。你不会在一周内从头开始跑步。您可以尝试抄袭原始的 Verilog AES 实现(也在 Opencores 上)。将其转换为 VHDL 的过程会教给您一些东西,但您也不会学会正确利用 Verilog 缺乏的 VHDL 功能。

于 2014-04-11T23:37:10.470 回答