Implementation
在不暴露列表的情況下安全地測試列表中項目的存在
甚至不確定哪些術語可以描述我正在尋找的內容,但總體構想是:
給定一個有限長度的字元串列表,確定一個測試字元串是否屬於該列表。然後,生成一個新的字元串列表,其中包含原始列表和測試字元串的差異。
在虛擬碼中,這可能看起來像:
def list = envelope(["string1", "string2", "string3"]) def validate( collection, test ) { if ( contains( collection, test ) ) { return remove( collection, test ) } else { throw Exception } } // In Use validate( list, "string2") -> envelope( ["string1", "string3"] ) validate( list, "string4") -> Exception
有人告訴我,這聽起來像是區塊鏈的工作方式,但鑑於我讀過的所有內容以及我對區塊鏈的基本了解,我對此表示懷疑。是否有其他可用的流程或協議可用於實現上述功能?
您可以為此使用收斂加密。
- 對於要插入的每個項目,計算其雜湊值,然後通過從該雜湊值派生密鑰對其進行加密。插入密文(丟棄散列/密鑰)。
- 要測試項目的存在,對其進行散列、加密、查找匹配的密文。
您可能希望使用雜湊表或搜尋樹(字典或集合)之類的東西,而不是平面列表,以避免 $ O(n) $ 查找項目時掃描。
請注意,使用者可以通過加密所選項目並根據列表檢查它們來暴力/字典攻擊該方案。