假设一个好的C程序员想要从scratch..anyone编写给定对称密码的VHDL代码,对编写一个不太困难的代码有什么想法或技巧吗?这只是最后一年项目的概念验证。我已经使用opencores内核成功地让AES工作了。
基本上,我有一周的时间来写一个VHDL实现。我会在C语言上高于平均水平,但在VHDL上不是很好,所以不要找太难的东西。读到了EStream密码之类的东西。如果有人能告诉我正确的direction...thanks的话!
附注:我担心的是,考虑到我工作的时间有限,我将处理一些在FPGA中实现起来太笨拙的事情!
发布于 2014-04-13 08:02:56
我在1996年用了两天半的时间写了一个数字加密标准(DES)的实现,在此之前我非常彻底地理解了这种特殊的(现在已经过时的)对称加密算法,更不用说VHDL了。我还使用小的C程序来生成VHDL代码的一部分(比如测试平台的测试向量,S盒)。DES最初要求在硬件中实现,在一项IBM专利中描述了RTL级别,而在FIPS Pub 46中以中立的方式记录了参考实现。
我的实现,可以用作参考,并不是直接符合综合条件的,它有需要删除的RTL级I/O缓冲区。它还使用配置来指定四个完全相同的字节寄存器对R和L中的S盒作为一个组件。我之前已经将它们与VHDL分析器/模拟器一起使用,但该分析器/模拟器尚未支持配置。
该分布的最大部分是关于DES的排列的PDF文档,该文档具有8位接口,是用于初始排列、逆初始排列和排列选择1的8条导线的转置(增加了第9条导线。E的排列也是非常规则的。唯一的不规则排列是排列选择2和P排列。当然还有S盒子。
在其最简单的实现中,DES可以在大约4700个NAND门等效电路中实现,并且存在具有预期结果的测试向量。
参见Dropbox上的vhdl_des.tar.gz和des.test (测试向量)。
还有一个javascript DES实现,它已经被禁用,以防止它在教育环境中使用任意键。捕获页面时,您可以实际撤消禁用,允许其使用任意键。参见JavaScript DES Example。这里的价值在于展示每一轮的内部值。
[带有可写密钥的JS-DES.html副本可以在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-12 07:37:10
与软件相比,HDL需要不同的开发思维。你不会在一周内白手起家。您可以尝试抄袭原始的Verilog AES实现(也是在Opencores上)。将其转换为VHDL的过程将教会您一些东西,但您也无法学会正确地利用Verilog所缺少的VHDL特性。
https://stackoverflow.com/questions/23023893
复制相似问题