我正在研究一个需要使用哈希算法的组合实现的项目。 VHDL/Verilog是目标语言,因为我希望能够在FPGA上工作。我已经完成了一些搜索,并且我已经遇到了MD5和SHA1的RFC规范,但我似乎无法在任何地方找到VHDL/Verilog中的组合(避免使用时钟)。你知道吗?散列算法本身并不重要,只要它至少与MD1一样强大即可。哈希算法的组合实现
回答
从以C写成的MD5或SHA1的实现开始。然后手动将算法中的每个步骤转换为流程图中的一个步骤。 C代码中的每个算术或逻辑运算都成为组合逻辑运算(门)。 C代码中的源变量和目标变量将成为硬件设计的输入和输出端口。 C代码中的临时变量成为连接组合逻辑块的内部网络的名称。
从理论上讲,应该有可能创建这些算法的纯组合实现。实际上,您可能会发现它需要太多的硬件资源(加法器,乘法器等),并且需要重用资源。只要您需要重新使用资源,您需要引入一些中间寄存器,然后您的输出在一定数量的时钟周期内无效。
我想我在互联网上看到一个项目,这种方式实现了SHA1。这是一个好主意......我会给它一个机会。谢谢! – eqb
这是一个有趣的古怪要求!
我想你会很难找到那里 - 哈希通常需要高吞吐量,这往往意味着大量的流水线和快速时钟,因此注册。
应该不会太难写,虽然:
- 写模块/为各种“混合”算法中使用
- 创建这使混合实体在一个圆形实体阶段的实体正确的顺序
- 使用
for
..generate
循环(或其Verilog等价物)来创建所需的所有循环。
真的......我想我会直接从代码中将一些C代码转换为VHDL/Verilog。谢谢! – eqb
检查www.opencores.org/projects
它有许多可用的加密核心,有源代码研究。
- 1. 现代PHP哈希算法
- 2. 哈希码实现
- 3. 哈希表实现
- 4. C++哈希算法
- 5. 哪种哈希算法最适合HMAC
- 6. 实现哈希表的
- 7. Jenkins哈希的Javascript实现?
- 8. Jenkins哈希的Python实现?
- 9. 这个自定义md5哈希算法是如何实现的?
- 10. 在scala类中实现哈希方法
- 11. 实现一致性哈希算法在Java中
- 12. 实现哈希映射
- 13. 持久哈希表实现
- 14. Java哈希表实现
- 15. 自己实现哈希
- 16. 实现在哈希表
- 17. Java哈希表实现
- 18. Python:Rabin-Karp算法哈希
- 19. 双向哈希算法?
- 20. Amazon DynamoDB哈希算法
- 21. constexprizing化jesteress哈希算法
- 22. ASP密码哈希算法
- 23. 如何实现动态哈希表的哈希函数?
- 24. 如何将两个哈希合并到数组的哈希中?
- 25. 将两个ulong哈希组合到新的ulong哈希中
- 26. 结合哈希
- 27. 计算SHA1哈希算法Powershell V2.0
- 28. Django未知密码哈希算法 - 编写自定义哈希算法
- 29. Java中的哈希数组哈希
- 30. 将Java哈希码组合成“主”哈希码
它是否需要纯粹的组合,因为你有一个异步设计? –
它需要是纯粹的组合,因为我希望实现在合成版本的代码中只有查找表。 – eqb