我正在研究一個需要使用哈希算法的組合實現的項目。 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