什麼是哈希值?
哈希是一種數學函數,它將任意長度的輸入轉換爲固定長度的加密輸出。因此,無論原始數據量或文件大小如何,其唯一的哈希值始終保持不變。此外,哈希值不能用於從哈希輸出“逆向工程”原始輸入,因爲哈希函數是“單向的”(就像絞肉機一樣;你無法將絞碎的牛肉重新變成牛排)。但是,如果對相同的數據使用哈希函數,其哈希值將保持不變,因此,如果您已經知道哈希值,則可以驗證數據是否相同(即未被篡改)。
哈希對於加密貨幣的區塊鏈管理也至關重要。
要點總結
- 哈希函數滿足加密對信息安全的要求。
- 哈希值的長度是固定的,因此如果有人試圖破解區塊鏈,幾乎不可能猜出哈希值。
- 相同的數據總是會產生相同的哈希值。
- 哈希是區塊鏈網絡的基礎之一。
- 哈希值是根據區塊頭中包含的信息生成的。
灰燼的工作原理
典型的哈希函數接受可變長度的輸入,並返回固定長度的輸出。加密哈希函數結合了哈希函數的消息傳遞能力和安全特性。哈希函數是決定信息加密方式的算法。
例如,安全哈希算法 256 (SHA-256) 通過以下過程對接收到的輸入進行加密:
- 將其轉換爲二進制
- 創建哈希值
- 初始化常量
- 將數據分塊成比特
- 創建消息計劃
- 運行壓縮循環
- 修改最終值
使用 SHA-256 算法,“Hello”一詞的輸出結果與“Hello world”和“Hello John”的輸出結果字符數相同(均爲 64)。然而,這三個詞的哈希值卻截然不同——請注意,大寫字母也會影響哈希值:
- 你好:185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
- 你好世界:64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
- 你好約翰:a8119595d77342cc73c93697a7f70920d3f4ded5d458e31907607e997ff76868
用於生成哈希值的函數是確定性的,這意味着每次使用相同的輸入都會產生相同的結果。SHA-256 可以在幾毫秒內生成哈希輸出,且計算能力非常有限,但同時也使得確定原始輸入變得十分困難。這使得哈希成爲保護加密貨幣的理想選擇,因爲即使使用現代技術,也需要數千年才能逆向加密以確定原始輸入。
哈希函數是計算機系統中常用的數據結構,用於檢查消息的完整性和驗證信息的真實性等任務。加密哈希函數增加了安全特性,使檢測消息或信息的內容更加困難。
具體而言,加密哈希函數具有以下三個特性:
- 它們不會發生衝突:這意味着任何兩個不同的輸入哈希值都不應該映射到同一個輸出哈希值。
- 它們可以被隱藏:很難從哈希函數的輸出中猜出其輸入值。
- 它們應該便於解謎:應該難以選擇一個能產生預定義輸出的輸入。因此,輸入應該選自盡可能寬泛的分佈。
由於哈希算法具有這些特性,因此被廣泛應用於網絡安全領域——從保護密碼到檢測數據泄露,再到檢查下載文件的完整性。
哈希和加密貨幣
加密貨幣的核心是區塊鏈,它是一個全球分佈式賬本,通過哈希算法將各個交易數據塊鏈接在一起。區塊鏈只包含經過驗證的交易,從而防止欺詐交易和雙重支付。加密貨幣挖礦和驗證都涉及對這種哈希算法的運算。
解決加密貨幣哈希問題首先使用前一個區塊的區塊頭作爲輸入,並生成一個哈希值。每個區塊頭包含版本號、時間戳、前一個區塊中使用的哈希值、默克爾根的哈希值、隨機數和目標哈希值。
目標是生成一個小於或等於網絡目標哈希值的哈希值。哈希值中包含一個稱爲 nonce 的數字序列,該序列只使用一次。挖礦程序會關注 nonce,第一次嘗試時 nonce 的值爲零。如果嘗試失敗,程序會將 nonce 加 1,然後再次生成哈希值。每次失敗後,程序都會將 nonce 加 1,直到生成一個小於或等於目標哈希值的哈希值,此時該哈希值就被接受爲有效解。
解決哈希問題需要礦工不斷嘗試生成正確的值,這需要大量的反覆試驗。成功解決哈希問題的礦工將獲得獎勵,並且該區塊將被添加到區塊鏈中。
礦工第一次就成功生成正確 nonce 的可能性極低,這意味着礦工可能需要嘗試大量的 nonce 選項才能找到正確的值。難度越高(衡量生成滿足目標哈希要求的哈希值的難易程度),生成解決方案所需的時間就越長。
什麼是哈希函數?
哈希函數是一種算法,它將給定的一組數據轉換或“映射”成固定大小的比特串,也稱爲“哈希”。
哈希值是如何計算的?
哈希函數利用複雜的算法,將任意長度的數據轉換爲固定長度(例如 256 個字符)的數據。如果原始數據中任意一位發生改變,整個哈希值都會隨之改變,因此可用於驗證數字文件和其他數據的真實性。
區塊鏈中哈希值有什麼用途?
哈希值在區塊鏈系統的多個部分都有應用。每個區塊頭都包含前一個區塊的哈希值,這確保了在添加新區塊時,現有數據未被篡改。加密貨幣區塊鏈使用哈希值來保護信息安全,並使賬本不可篡改。
結論
在加密貨幣區塊鏈中,哈希值是一個確定性的十六進制數。這意味着無論輸入的數據有多少個字符,哈希值始終是相同長度的字符。例如,比特幣的哈希值始終爲 64 位。
哈希值用於保護信息安全——在加密貨幣領域,它用於確保區塊鏈區塊中包含的數據不被篡改。當網絡參與者嘗試生成小於網絡目標哈希值的哈希值時,他們便會對哈希函數加密的信息進行驗證。一旦達到目標哈希值,網絡就會關閉該區塊——共識是在區塊關閉後達成的,因爲即使哈希值已被解決,網絡仍會繼續驗證交易和區塊信息。