2012-09-28 58 views
1

我在Delphi XE2中編寫自己的組件,但我主要使用C++ Builder。這就是爲什麼我需要關於Delphi DCrypt庫的一些幫助。Delphi DCrypt - 如何隔離SHA256?

我的新組件需要有一個方法(函數)來計算字符串的sha256散列值。我知道DCrypt庫,我使用它一段時間,但這次我需要隔離SHA256哈希算法,並將其添加到我的新組件。

DCrypt已將SHA256存儲在DCPsha256.pas中,但由於我不熟悉Delphi,所以我不知道該怎麼做。我不需要安裝TDCP_sha256,我只需要能夠在我的新組件中計算SHA256。

想法?謝謝。

回答

4

手動創建對象。使用現有單位,不要修改DCPCrypt。

如何創建一個對象:

var 
    x:TDCP_sha256; 

begin 
    x := TDCP_sha256.Create(nil); 
    try 
    // do stuff, create hash, whatever. 
    finally 
    x.Free; 
    end; 
end; 

你不需要爲了提供對要使用的類,除非你想把它們拖放到窗體或數據安裝任何程序包模塊。如果你像上面的代碼那樣編寫代碼,你不需要修改任何東西。

+0

謝謝!這就是我想要的。 – Tracer

4
  1. 一:不這樣做。最好分發DCrypt庫與你的組件,並允許用戶更新到更新的版本。 如果sha256會變成越野車,或者與新的Delphi版本不兼容 - 你會怎麼做?如果你使用DCrypt,那麼你只需下載它的新版本。如果你孤立了它 - 那麼你必須自己修復它。你是否在Delphi和密碼數學中都有足夠的技巧,將來總是會修正sha256代碼和新的Delphi版本的所有修正?

  2. 但是,如果你堅持 - 然後啓動到德爾福肩並肩。在一個打開的DCrypt源中,在另一個打開的新空單元中。將shary生成過程從DCrypt複製到空單元並嘗試編譯。德爾福會告訴你未知的標識符。看看Dcrypt Delphi並找到它們的聲明。如果他們也是從DCpypt - 然後再將它們複製到新的單位。如果他們來自RTL/VCL - 將該設備添加到新設備的使用中。並嘗試再次編譯。重複此操作,直到所有標識符都被USES解析或從DCrypt複製到您的文件中。 編譯完成後 - 拿一些文件並通過DCrypt和你的新庫來計算哈希值 - 如果它們不同,這意味着你有一些東西需要找到並修復它(你有足夠的加密算術經驗,不是嗎) 。

我做了Win64的彙編優化的Spring4D SHA代碼和所有的代碼覆蓋單元測試,所以我總是新的,如果我的優化破事與否。如果沒有這些全面的評估政策,我就無法做到。

我強烈建議你堅持使用DCrypt或Lockbox3或Spring4D或任何其他強生活庫,而不要孤立自己。與社區保持一致,你可以爲自己使用自己的勞動。隔離 - 每當新的錯誤或不兼容性面臨問題時,您都必須重新執行它。

您無法從庫中提取代碼 - 爲什麼您認爲您可以將該代碼升級到XE4/5/6並證明它沒有被破壞?

+0

它對我來說非常複雜,迫使用戶(程序員)爲我的組件安裝整個DCrypt。我寧願避免它來簡化事情。但如果沒有選擇..... – Tracer

+2

總有選擇。轉到Torry.net或谷歌,找到你想要的任何sha256實現。但之後 - 是該散列實現的維護者。你想要嗎,可以嗎?順便說一句,使用庫也可以讓你切換散列,只要你喜歡只是通過改變散列類。我不知道Delphi的DCypt是什麼,如果它是複雜的,但也許另一個庫就足夠了。 –

+1

你也可以多做一些 - 設計一些簡單的哈希接口。然後添加基於DCrypt的實現,添加基於LockBox3的實現等。如果我是你的組件的用戶,我可能不介意添加第一個加密庫,但是我肯定會因添加一個更多的庫而煩惱。因此,將散列實現從組件中解耦出來會讓用戶使用您的默認引擎(如果您將來需要另一個lib,則可以輕鬆切換)或使用他們已有的庫。只需使用DUnit測試執行是否正確,不會泄漏等 –