Encryption
散列一組數據並驗證組內是否存在值的概念
在學習密碼學和散列時,我記得看到一個概念,您可以散列多個值(例如 ID),然後根據散列進行驗證,而不是儲存原始 ID。在進一步研究後,我找不到任何具體的例子。
我想知道我最初學習散列時是否誤解了這個概念。請查看以下場景,如果我誤解或存在該概念,請告訴我:
概念
一所大學正在為學生舉辦比賽。大學工作人員隨機選擇了十個學生證作為獲勝者。學生可以訪問一個網站並輸入他們的學生證,看看他們是否獲勝。
獲勝的學生 ID 不儲存在數據庫中,而是經過雜湊處理。當學生在網站上輸入 ID 時,輸入的 ID 將根據這個“獲勝雜湊”進行驗證。
問題
- 這種類型的“值組”散列和驗證是一個存在的概念,還是我在研究中誤解了某些東西?
- 如果這不存在,正確的方法是對每個獲勝的學生 ID 進行雜湊處理,然後當學生輸入 ID 對其進行雜湊處理並根據個人儲存的雜湊值對其進行驗證?
謝謝!
聽起來您在描述Bloom filter。
請注意,它們旨在允許誤報(但不允許誤報)。它們可以很好地快速檢查一個值是否可能在某個值得進行計算量更大的檢查的集合中。想像一下,您正在逐字掃描大量文本,有一組您正在尋找的關鍵詞,並且有更多的關鍵詞超出了 RAM 的容量。您可以從適合 RAM 的所有關鍵字創建一個布隆過濾器。每當您找到通過布隆過濾器的單詞時,這意味著該單詞可能是關鍵字,因此您可以根據磁碟上的關鍵字列表仔細檢查該單詞。這使您不必為掃描的每個單詞訪問磁碟。