2011-10-20 136 views
2

我正在研究一個需要使用哈希算法的組合實現的項目。 VHDL/Verilog是目標語言,因爲我希望能夠在FPGA上工作。我已經完成了一些搜索,並且我已經遇到了MD5和SHA1的RFC規範,但我似乎無法在任何地方找到VHDL/Verilog中的組合(避免使用時鐘)。你知道嗎?散列算法本身並不重要,只要它至少與MD1一樣強大即可。哈希算法的組合實現

+0

它是否需要純粹的組合,因爲你有一個異步設計? –

+0

它需要是純粹的組合,因爲我希望實現在合成版本的代碼中只有查找表。 – eqb

回答

3

從以C寫成的MD5或SHA1的實現開始。然後手動將算法中的每個步驟轉換爲流程圖中的一個步驟。 C代碼中的每個算術或邏輯運算都成爲組合邏輯運算(門)。 C代碼中的源變量和目標變量將成爲硬件設計的輸入和輸出端口。 C代碼中的臨時變量成爲連接組合邏輯塊的內部網絡的名稱。

從理論上講,應該有可能創建這些算法的純組合實現。實際上,您可能會發現它需要太多的硬件資源(加法器,乘法器等),並且需要重用資源。只要您需要重新使用資源,您需要引入一些中間寄存器,然後您的輸出在一定數量的時鐘週期內無效。

+0

我想我在互聯網上看到一個項目,這種方式實現了SHA1。這是一個好主意......我會給它一個機會。謝謝! – eqb

1

這是一個有趣的古怪要求!

我想你會很難找到那裏 - 哈希通常需要高吞吐量,這往往意味着大量的流水線和快速時鐘,因此註冊。

應該不會太難寫,雖然:

  • 寫模塊/爲各種「混合」算法中使用
  • 創建這使混合實體在一個圓形實體階段的實體正確的順序
  • 使用for .. generate循環(或其Verilog等價物)來創建所需的所有循環。
+0

真的......我想我會直接從代碼中將一些C代碼轉換爲VHDL/Verilog。謝謝! – eqb