尋找一個跨平台/便攜式程序,可以輸出檔案的加密哈希值

尋找一個跨平台/便攜式程序,可以輸出檔案的加密哈希值

我正在尋找一個程序,它應該是跨Windows 和Linux 的源代碼可移植的(例如ANSI C 等),它生成加密哈希值(如MD5、SHA 等)以及傳遞給它的文件/文件列表的CRC32 。

我將在 TB 級的文件上運行這個可執行文件,生成它們的 SHA、MD5 和 CRC32(以及將來的更多)簽名,因此速度更快很重要

我想到的正是 ReHash重新散列,重新散列

不幸的是,我看到許多用戶抱怨哈希值的實作有錯誤,以及填充(基於區塊的演算法)的實作方式也存在錯誤。

作為密碼學方面的專家,只是在尋找一個黑盒解決方案,它可以簡單地為我提供我想要的哈希值,而無需我編譯一些程式碼,我想知道是否有更好的方法?

當然,我可以用 Python 編寫一個膠水程序,該程式將使用加密模組來產生我想要的內容,但我更喜歡使用 C 等語言編譯的二進位。

我將在TB 級的文件上運行這個可執行文件,生成它們的SHA、MD5 和CRC32(以及將來的更多)簽名並通過Python 代碼處理所有這些,因此與Python 兼容的東西將是首選,但不會以犧牲C 為代價就像速度一樣。

答案1

python 加密操作以本機程式碼(從 C 編譯)實作。由於您需要 python 程式中的值,因此使用它們會更簡單。

Linux 附帶了用於校驗和計算的實用程式(cksummd5sumsha1sum、 ...)。大多數其他unice也是如此。 GNU 實用程式有多個 Windows 連接埠(這是您在 Linux 上獲得的):西格文,Gnuwin32,系統,...如果您想獲得 SHA-256 和 SHA-512,您將需要足夠新的實用程式。

有多種 ANSI C 實現,它們具有各種加密演算法的非常自由的許可證,但通常不會收集在單一發行版中。您可以搜尋它們並在小輸入上測試它們以檢查它們的可靠性。

在 Windows 下,請確保您根據需要正確地將文件視為二進位或文本,因為校驗和是透過位元組流而不是行流定義的。 (通常您希望以二進位模式開啟文件,但如果您有一個已轉碼為 Windows 行結尾的文字文件,則需要將其作為文字開啟以反轉效果。)在任何作業系統下,請確保開啟檔案時不進行任何編碼轉換。

由於速度對您來說非常重要,因此收集您可以找到的所有實現,並在中等大小的輸入(幾兆位元組)上對它們進行基準測試。不同的實作可能會在不同的架構上提供更好的速度。如果您可以運行它們,64 位元實作可能會更快。

答案2

OpenSSL 有計算哈希值的工具。賽格溫 (http://www.cygwin.com/)項目有 openssl 工具。儘管由於 cygwin 層的原因,它會比純 Windows 應用程式慢一點,但您還將獲得一個可以編寫哈希生成腳本的環境。

相關內容