【科技暢想】輸出字符一樣長 解密散列冇得估

Hashing(散列)是將任何給定的字符串轉換為另一個值的過程。
靜態散列是一種在電腦編程中散列或縮短字符串的方法,其中縮短的字符集保持相同的長度,以提高訪問數據的便利性。列出的所有對象都是靜態的,並且在應用靜態散列時不會被更改。在過程中,靜態散列會創建了一個更小、適應性強的字符串,使用戶可以更快、更輕鬆地查找對象或存儲在包含數據結構中的對象組,亦更好地利用數據庫中的可用空間來存儲系統中的對象、表和其他數據。
解決數據庫過大問題
動態散列則是另一種方法,但縮短的字符集會增長、縮小和重新組織,以適應訪問數據的方式。列出的所有對象都是動態的,並且在應用動態Hashing時可能會發生變化。動態散列的過程創建了一個更小、適應性強的字符串,使用戶可以更快、更容易地找到字典中的對象或存儲在包含數據結構中的對象組,還可防止因數據庫過大而導致的問題。此外,它還最大化了系統內對象、表和其他數據的可用空間。
此外,散列不能用於「逆向工程」來自散列輸出的輸入,因為散列函數是「單向」的,概念就像碎肉機,你不可能把碎牛肉變回牛排。儘管如此,如果你對相同的數據使用這樣的函數,它的Hash值將是相同的,因此如果已經知道它的Hash值,就可以驗證數據是否相同(即未更改)。
通過函數處理數據
區塊鏈僅包含經過驗證的交易。生成的加密值是一系列與原始數據不相似的數字和字母,稱為Hash。散列需要通過數學函數處理來自區塊的數據,從而產生固定長度的輸出。使用固定長度的輸出可以提高安全性,因為任何試圖解密散列的人,都無法簡單地通過查看輸出的長度來判斷輸入的長度。
解決Hash從區塊頭中可用的數據,本質上就是解決一個複雜的數學問題。每個區塊頭都包含一個版本號、一個時間標籤、前一個區塊中使用的Hash值。解題的人專注於一串數字。該數字附加到前一個塊的散列內容,然後對其進行散列。如果這個新的Hash值小於或等於目標Hash值,那麼它被接受為解決方案,獲得獎勵,區塊被添加到區塊鏈中。
散列單詞「早晨」與「我要去吃早餐」,其輸出的長度相同。用於生成Hash的函數是確定性的,這意味着每次使用相同的輸入時,都會產生相同的結果。它可以有效地生成散列輸入;它還使確定輸入變得困難,並且對輸入進行小的更改會導致無法識別的、完全不同的散列。所以,處理加密新區塊所需的Hash函數需要大量的電腦處理能力。
本會最近舉辦了ABCD的概念比賽,歡迎大家參加,獎品豐富,從比賽中研究不同的課題,例如本文有關區塊鏈基礎的學習,從而理解更多新穎的資訊科技。https://hknetea.org/?page_id=3531
◆ 洪文正 香港新興科技教育協會
簡介:本會培育科普人才, 提高各界對科技創意應用的認識,為香港青年提供更多機會參與國際性及大中華地區的科技創意活動 ,詳情可瀏覽www.hknetea.org。
隔星期五見報