我是 CMake 的新手,并試圖理解以下 CMake 命令
FetchContent_Declare(curl
URL https://github.com/curl/curl/releases/download/curl-7_75_0/curl-7.75.0.tar.xz
URL_HASH SHA256=fe0c49d8468249000bda75bcfdf9e30ff7e9a86d35f1a21f428d79c389d55675
USES_TERMINAL_DOWNLOAD TRUE)
當我打開瀏覽器并輸入https://github.com/curl/curl/releases/download/curl-7_75_0/curl-7.75.0.tar.xz時,檔案curl-7.75.0.tar.xz將開始下載而無需URL_HASH. 我確信這不是多余的。我想知道這樣做的目的URL_HASH是什么?
還有怎么能SHA256找到?因為當我訪問https://github.com/curl/curl/releases/download/curl-7_75_0以了解更多資訊時,鏈接已損壞。
uj5u.com熱心網友回復:
我確信這不是多余的。我想知道 URL_HASH 的目的是什么?
像 SHA256 這樣的安全散列函式被設計為單向的;(在實踐中)不可能使用與原始檔案相同的 SHA256 哈希來制作檔案的惡意版本。甚至不可能找到兩個具有相同哈希的任意檔案。這樣的一對被稱為“碰撞”,即使找到一個也將構成密碼分析的重大突破。
因此,CMakeLists.txt 中此哈希的目的是作為完整性檢查。如果惡意攻擊者以某種方式攔截了您的連接,那么根據這個硬編碼的預期哈希檢查您實際下載的檔案的哈希將檢測檔案是否在傳輸程序中發生更改。這甚至可以捕獲不太嚴重的資料損壞,例如由故障硬碟驅動器引起的資料損壞。
在下載代碼或其他二進制工件時,絕對需要包含這樣的哈希(“校驗和”) 。
另外如何找到SHA256?
通常,這些將與二進制檔案一起發布。如果可用,請使用已發布的值。
如果你必須自己計算,你有幾個選擇。在 Linux 命令列上,您可以使用該sha256sum命令。作為一個黑客,你可以故意寫一個錯誤的SHA256=0值或其他東西,然后從錯誤訊息中找出觀察到的值。
請注意,如果您自己計算哈希,您應該 (a) 從絕對受信任的連接和設備下載檔案,或 (b) 從多個獨立設備下載檔案(GitHub Actions 等免費 CI 系統對此很有用)并確保哈希在所有這些中都是相同的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497834.html
下一篇:phpcurl_exec回傳“HTTP/1.1100Continue”,后跟“HTTP/1.1404NotFound”
