2011-11-26 15 views
6

मैं फ़ाइलों के साथ डेटाबेस बनाना चाहता हूं। और, इन फ़ाइलों को आसानी से खोजने के लिए, मैं किसी प्रकार की हैशिंग तकनीक का उपयोग करना चाहता हूं। हालांकि, मैं न केवल उन फ़ाइलों को ढूंढना चाहता हूं जो बिल्कुल समान हैं, लेकिन यह भी जांचें कि फाइलों के कुछ हिस्सों एक जैसे हैं (यानी, फाइलें समान हैं)। दूसरे शब्दों में, समान फाइलों में समान हैंश होना चाहिए।एक हैश कैसे बनाएं जो समान इनपुट के समान है?

इसका मतलब है कि हैश इस तरह वास्तव में एक क्रिप्टोग्राफिक हैश क्योंकि वहाँ एक 'हिमस्खलन प्रभाव' नहीं होना चाहिए नहीं है (अवधाव प्रभाव का मतलब है कि डेटा के प्रत्येक बिट अन्य डेटा के सभी अन्य बिट्स प्रभावित करता है।)

एक और बात यह है कि हैश को एक तरफ होने की आवश्यकता नहीं है, क्योंकि इसका उपयोग सुरक्षापुरुपों के लिए नहीं किया जाता है बल्कि फाइलों की तुलना में किया जाता है।

तो संक्षेप में, मैं एक एल्गोरिथ्म कि प्रत्येक अद्वितीय इनपुट कि के लिए एक अद्वितीय हैश बना सकते हैं के लिए खोज कर रहा हूँ:

  • है (लगभग) कोई टकराव

  • के लिए एक समान उत्पादन बनाता है इसी तरह के इनपुट

  • मूल फ़ाइल से छोटा है (अन्यथा यह मूल फ़ाइलों की तुलना में बस तेज़ होगा)।

मैं पहले दो अक्षर के साथ आदि हालांकि जोड़ने, फिर एक साथ 3 और 4rth जोड़ने, की तरह कुछ के बारे में सोच रहा था, इस के बाद से "1 + 4" टकराव का एक विशाल राशि है "के रूप में एक ही है 2 + 2 ", आदि

मुझे वास्तव में कोई जानकारी नहीं है कि कैसे शुरू किया जाए। क्या कोई मुझे कृपया प्रबुद्ध कर सकता है? :)

+1

यह शायद बहुत मुश्किल है। Http://en.wikipedia.org/wiki/Agrep –

+2

देखें यदि नौकरी सामान्य बाइट्स वाली फ़ाइलों को ढूंढना है, [ssdeep] (http://ssdeep.sourceforge.net/), उस पर बहुत अच्छा है। –

+0

आप एक संपीड़न एल्गोरिदम बनाने के लिए देख रहे हैं, एक प्रकार के बाद। आप सभी संपीड़ित इनपुट के लिए समान आवृत्ति सारणी का उपयोग करेंगे ताकि चीजों को निर्धारित करने के लिए। – sehe

उत्तर

3

इसे आमतौर पर near duplicate detection समस्या कहा जाता है और हल करना आसान नहीं है; मैं simhash एल्गोरिदम (कोड here) की अनुशंसा करता हूं।

1

मैं वर्तमान में एक ही प्रभाव प्राप्त करने के लिए एसएसडीप का उपयोग कर रहा हूं और मुझे इसके साथ बहुत अच्छे परिणाम मिल रहे हैं।

मैंने यह भी पढ़ा है कि एसडीएचएस एसएसडीआईपी से बेहतर है।

संबंधित मुद्दे