ഫയൽ ഹാഷിംഗ്. ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷൻ

വൈവിധ്യമാർന്ന വിവര സാങ്കേതിക വ്യവസായങ്ങളിൽ ഹാഷ് ഫംഗ്ഷനുകൾ അവയുടെ പ്രയോഗം കണ്ടെത്തുന്നു. ഒരു വശത്ത്, ഉപയോക്താക്കൾ തമ്മിലുള്ള ഡാറ്റാ കൈമാറ്റവും വിവിധ ആവശ്യങ്ങൾക്കായി ഉപയോഗിക്കുന്ന ഫയലുകളുടെ പ്രോസസ്സിംഗും ഗണ്യമായി ലഘൂകരിക്കാനും മറുവശത്ത്, പ്രസക്തമായ ഉറവിടങ്ങളിലേക്ക് ആക്സസ് നിയന്ത്രണം ഉറപ്പാക്കുന്നതിന് അൽഗോരിതം ഒപ്റ്റിമൈസ് ചെയ്യാനും അവ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു. ഡാറ്റയുടെ പാസ്‌വേഡ് പരിരക്ഷ ഉറപ്പാക്കുന്നതിനും ഇലക്ട്രോണിക് ഡിജിറ്റൽ സിഗ്നേച്ചർ ഉപയോഗിച്ച് ഒപ്പിട്ട പ്രമാണങ്ങളുടെ കൈമാറ്റം സംഘടിപ്പിക്കുന്നതിനുമുള്ള പ്രധാന ഉപകരണങ്ങളിലൊന്നാണ് ഹാഷ് ഫംഗ്ഷൻ. ഫയൽ കാഷിംഗ് നടപ്പിലാക്കാൻ കഴിയുന്ന നിരവധി മാനദണ്ഡങ്ങളുണ്ട്. അവയിൽ പലതും റഷ്യൻ സ്പെഷ്യലിസ്റ്റുകൾ വികസിപ്പിച്ചെടുത്തതാണ്. ഏത് തരത്തിലുള്ള ഹാഷ് ഫംഗ്ഷനുകളിൽ അവതരിപ്പിക്കാനാകും? അവയുടെ പ്രായോഗിക പ്രയോഗത്തിനുള്ള പ്രധാന സംവിധാനങ്ങൾ എന്തൊക്കെയാണ്?

അത് എന്താണ്?

ആദ്യം, നമുക്ക് ഒരു ഹാഷ് ഫംഗ്ഷന്റെ ആശയം പര്യവേക്ഷണം ചെയ്യാം. ഗണിതശാസ്ത്ര രീതികൾ ഉപയോഗിച്ച് ഒരു നിശ്ചിത അളവിലുള്ള വിവരങ്ങൾ പ്രതീകങ്ങളുടെ ഒരു ചെറിയ ശ്രേണിയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിനുള്ള ഒരു അൽഗോരിതം എന്ന നിലയിലാണ് ഈ പദം സാധാരണയായി മനസ്സിലാക്കുന്നത്. ഹാഷ് ഫംഗ്‌ഷന്റെ പ്രായോഗിക പ്രാധാന്യം വിവിധ മേഖലകളിൽ കാണാൻ കഴിയും. അതിനാൽ, സമഗ്രതയ്ക്കായി ഫയലുകളും പ്രോഗ്രാമുകളും പരിശോധിക്കുമ്പോൾ അവ ഉപയോഗിക്കാം. ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷനുകളും എൻക്രിപ്ഷൻ അൽഗോരിതങ്ങളിൽ ഉപയോഗിക്കുന്നു.

സ്വഭാവഗുണങ്ങൾ

പഠിച്ചുകൊണ്ടിരിക്കുന്ന അൽഗോരിതങ്ങളുടെ പ്രധാന സവിശേഷതകൾ നമുക്ക് പരിഗണിക്കാം. അവർക്കിടയിൽ:

  • യഥാർത്ഥ ദൈർഘ്യത്തിന്റെ ഡാറ്റയെ പ്രതീകങ്ങളുടെ ഒരു ചെറിയ ശ്രേണിയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിനുള്ള ആന്തരിക അൽഗോരിതങ്ങളുടെ സാന്നിധ്യം;
  • ക്രിപ്‌റ്റോഗ്രാഫിക് സ്ഥിരീകരണത്തിനായി തുറന്നിരിക്കുന്നു;
  • യഥാർത്ഥ ഡാറ്റ വിശ്വസനീയമായി എൻക്രിപ്റ്റ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്ന അൽഗോരിതങ്ങളുടെ സാന്നിധ്യം;
  • ചെറിയ കമ്പ്യൂട്ടിംഗ് പവർ ഉപയോഗിക്കുമ്പോൾ ഡീക്രിപ്ഷനുമായി പൊരുത്തപ്പെടൽ.

ഹാഷ് ഫംഗ്‌ഷന്റെ മറ്റ് പ്രധാന ഗുണങ്ങളിൽ ഇവ ഉൾപ്പെടുന്നു:

  • അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള പ്രാരംഭ ഡാറ്റ അറേകൾ പ്രോസസ്സ് ചെയ്യാനുള്ള കഴിവ്;
  • ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള ഹാഷ്ഡ് ബ്ലോക്കുകൾ സൃഷ്ടിക്കുക;
  • ഔട്ട്പുട്ടിൽ ഫംഗ്ഷൻ മൂല്യങ്ങൾ തുല്യമായി വിതരണം ചെയ്യുക.

പരിഗണിക്കപ്പെടുന്ന അൽഗോരിതങ്ങൾ 1-ബിറ്റ് തലത്തിൽ ഇൻപുട്ട് ഡാറ്റയോടുള്ള സംവേദനക്ഷമതയും അനുമാനിക്കുന്നു. അതായത്, താരതമ്യേന പറഞ്ഞാൽ, സോഴ്സ് ഡോക്യുമെന്റിൽ കുറഞ്ഞത് 1 അക്ഷരമെങ്കിലും മാറിയാലും, ഹാഷ് ഫംഗ്ഷൻ വ്യത്യസ്തമായി കാണപ്പെടും.

ഹാഷ് ഫംഗ്ഷനുകൾക്കുള്ള ആവശ്യകതകൾ

ഒരു പ്രത്യേക പ്രദേശത്ത് പ്രായോഗിക ഉപയോഗത്തിനായി ഉദ്ദേശിച്ചിട്ടുള്ള ഹാഷ് ഫംഗ്ഷനുകൾക്ക് നിരവധി ആവശ്യകതകൾ ഉണ്ട്. ആദ്യം, ഹാഷ് ചെയ്ത പ്രമാണങ്ങളുടെ ആന്തരിക ഘടനയിലെ മാറ്റങ്ങളോട് അനുബന്ധ അൽഗോരിതം സംവേദനക്ഷമതയുള്ളതായിരിക്കണം. അതായത്, ഹാഷ് ഫംഗ്ഷനിൽ, നമ്മൾ ഒരു ടെക്സ്റ്റ് ഫയലിനെക്കുറിച്ചാണ് സംസാരിക്കുന്നതെങ്കിൽ, ഖണ്ഡിക പുനഃക്രമീകരണങ്ങളും ഹൈഫനുകളും തിരിച്ചറിയണം. ഒരു വശത്ത്, പ്രമാണത്തിന്റെ ഉള്ളടക്കം മാറില്ല, മറുവശത്ത്, അതിന്റെ ഘടന ക്രമീകരിച്ചിരിക്കുന്നു, ഹാഷിംഗ് സമയത്ത് ഈ പ്രക്രിയ തിരിച്ചറിയണം. രണ്ടാമതായി, റിവേഴ്സ് ഓപ്പറേഷൻ (ഹാഷിനെ ഒറിജിനൽ ഡോക്യുമെന്റിലേക്ക് പരിവർത്തനം ചെയ്യുന്നത്) പ്രായോഗികമായി അസാധ്യമായ വിധത്തിൽ, സംശയാസ്പദമായ അൽഗോരിതം ഡാറ്റയെ പരിവർത്തനം ചെയ്യണം. മൂന്നാമതായി, ഹാഷ് ഫംഗ്‌ഷനിൽ അൽ‌ഗോരിതങ്ങളുടെ ഉപയോഗം ഉൾപ്പെട്ടിരിക്കണം, അത് ഒരു ഹാഷിന്റെ രൂപത്തിൽ പ്രതീകങ്ങളുടെ അതേ ശ്രേണി രൂപപ്പെടാനുള്ള സാധ്യതയെ ഫലത്തിൽ ഇല്ലാതാക്കുന്നു, മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, കൂട്ടിയിടികൾ എന്ന് വിളിക്കപ്പെടുന്ന രൂപം. അവരുടെ സാരാംശം ഞങ്ങൾ കുറച്ച് കഴിഞ്ഞ് നോക്കും.

ഒരു ഹാഷ് ഫംഗ്ഷൻ അൽഗോരിതം പാലിക്കേണ്ട ശ്രദ്ധിക്കേണ്ട ആവശ്യകതകൾ പ്രധാനമായും സങ്കീർണ്ണമായ ഗണിതശാസ്ത്ര സമീപനങ്ങളിലൂടെ നേടാനാകും.

ഘടന

പരിഗണനയിലുള്ള പ്രവർത്തനങ്ങളുടെ ഘടന എന്തായിരിക്കുമെന്ന് നമുക്ക് പഠിക്കാം. ഞങ്ങൾ മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, പരിഗണനയിലുള്ള അൽഗോരിതങ്ങൾക്കുള്ള പ്രധാന ആവശ്യകതകളിലൊന്ന് ഏകദിശ എൻക്രിപ്ഷൻ ഉറപ്പാക്കുക എന്നതാണ്. ഒരു ഹാഷ് മാത്രമുള്ള ഒരു വ്യക്തിക്ക് അതിൽ നിന്ന് യഥാർത്ഥ പ്രമാണം നേടാൻ പ്രായോഗികമായി കഴിയാതെ വരും.

അത്തരം ആവശ്യങ്ങൾക്കായി ഉപയോഗിക്കുന്ന ഒരു ഹാഷ് ഫംഗ്‌ഷനെ ഏത് ഘടനയിൽ പ്രതിനിധീകരിക്കാനാകും? അതിന്റെ ഘടനയുടെ ഒരു ഉദാഹരണം ഇപ്രകാരമായിരിക്കാം: H (ഹാഷ്, അതായത്, ഹാഷ്) = f (T (ടെക്‌സ്റ്റ്), H1), ഇവിടെ H1 എന്നത് ടെക്‌സ്‌റ്റ് പ്രോസസ്സിംഗ് അൽഗോരിതം T ആണ്. ഈ ഫംഗ്‌ഷൻ T എന്നത് അറിവില്ലാതെ ഹാഷ് ചെയ്യുന്നു. H1 ന്റെ ഒരു പൂർണ്ണമായ ഒരു ഫയൽ മിക്കവാറും അസാധ്യമായതിനാൽ അത് തുറക്കാൻ കഴിയും.

പ്രായോഗികമായി ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു: ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യുന്നു

പ്രായോഗികമായി ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നതിനുള്ള ഓപ്ഷനുകൾ നമുക്ക് ഇപ്പോൾ കൂടുതൽ വിശദമായി പഠിക്കാം. ഇന്റർനെറ്റ് സെർവറുകളിൽ നിന്ന് ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യുന്നതിനായി സ്ക്രിപ്റ്റുകൾ എഴുതുമ്പോൾ ഉചിതമായ അൽഗോരിതങ്ങളുടെ ഉപയോഗം ഉപയോഗിക്കാം.

മിക്ക കേസുകളിലും, ഓരോ ഫയലിനും ഒരു നിശ്ചിത ചെക്ക്സം നിർണ്ണയിക്കപ്പെടുന്നു - ഇതാണ് ഹാഷ്. സെർവറിൽ സ്ഥിതി ചെയ്യുന്നതും ഉപയോക്താവിന്റെ കമ്പ്യൂട്ടറിലേക്ക് ഡൗൺലോഡ് ചെയ്യുന്നതുമായ ഒബ്‌ജക്റ്റിന് ഇത് സമാനമായിരിക്കണം. ഇത് അങ്ങനെയല്ലെങ്കിൽ, ഫയൽ തുറന്നേക്കില്ല അല്ലെങ്കിൽ ശരിയായി സമാരംഭിച്ചേക്കില്ല.

ഹാഷ് ഫംഗ്ഷനും ഡിജിറ്റൽ സിഗ്നേച്ചറും

ഡിജിറ്റൽ സിഗ്നേച്ചർ അടങ്ങിയ പ്രമാണങ്ങളുടെ കൈമാറ്റം സംഘടിപ്പിക്കുമ്പോൾ ഹാഷ് ഫംഗ്ഷനുകളുടെ ഉപയോഗം സാധാരണമാണ്. ഈ സാഹചര്യത്തിൽ, ഒപ്പിട്ട ഫയൽ ഹാഷ് ചെയ്‌തതിനാൽ സ്വീകർത്താവിന് അത് യഥാർത്ഥമാണോ എന്ന് പരിശോധിക്കാനാകും. ഇലക്ട്രോണിക് കീയുടെ ഘടനയിൽ ഹാഷ് ഫംഗ്ഷൻ ഔപചാരികമായി ഉൾപ്പെടുത്തിയിട്ടില്ലെങ്കിലും, eToken പോലെയുള്ള പ്രമാണങ്ങളിൽ ഒപ്പിടാൻ ഉപയോഗിക്കുന്ന ഹാർഡ്‌വെയറിന്റെ ഫ്ലാഷ് മെമ്മറിയിൽ ഇത് രേഖപ്പെടുത്താം.

പബ്ലിക്, പ്രൈവറ്റ് കീകൾ ഉപയോഗിച്ച് ഒരു ഫയലിന്റെ എൻക്രിപ്ഷൻ ആണ് ഇലക്ട്രോണിക് സിഗ്നേച്ചർ. അതായത്, ഒരു സ്വകാര്യ കീ ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്ത ഒരു സന്ദേശം സോഴ്സ് ഫയലിൽ ഘടിപ്പിച്ചിരിക്കുന്നു, കൂടാതെ ഒരു പബ്ലിക് കീ ഉപയോഗിച്ച് ഡിജിറ്റൽ സിഗ്നേച്ചർ പരിശോധിച്ചുറപ്പിക്കുന്നു. രണ്ട് ഡോക്യുമെന്റുകളുടെയും ഹാഷ് ഫംഗ്‌ഷൻ പൊരുത്തപ്പെടുന്നെങ്കിൽ, സ്വീകർത്താവിന്റെ കൈവശമുള്ള ഫയൽ യഥാർത്ഥമാണെന്നും അയച്ചയാളുടെ ഒപ്പ് ശരിയാണെന്നും തിരിച്ചറിയും.

ഹാഷിംഗ്, ഞങ്ങൾ മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, ഡിജിറ്റൽ സിഗ്നേച്ചറിന്റെ നേരിട്ട് ഒരു ഘടകമല്ല, എന്നാൽ ഒരു ഇലക്ട്രോണിക് സിഗ്നേച്ചർ ഉപയോഗിക്കുന്നതിനുള്ള അൽഗോരിതം വളരെ ഫലപ്രദമായി ഒപ്റ്റിമൈസ് ചെയ്യാൻ ഇത് ഒരാളെ അനുവദിക്കുന്നു. അതിനാൽ, വാസ്തവത്തിൽ, ഹാഷ് മാത്രമേ എൻക്രിപ്റ്റ് ചെയ്യാനാകൂ, അല്ലാതെ പ്രമാണം തന്നെയല്ല. തൽഫലമായി, ഫയൽ പ്രോസസ്സിംഗിന്റെ വേഗത ഗണ്യമായി വർദ്ധിക്കുന്നു, അതേ സമയം കൂടുതൽ ഫലപ്രദമായ ഡിജിറ്റൽ സിഗ്നേച്ചർ പ്രൊട്ടക്ഷൻ മെക്കാനിസങ്ങൾ നൽകാൻ കഴിയും, കാരണം ഈ കേസിൽ കമ്പ്യൂട്ടിംഗ് പ്രവർത്തനങ്ങളിൽ ഊന്നൽ നൽകുന്നത് യഥാർത്ഥ ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്നതിലല്ല, മറിച്ച് ഒപ്പിന്റെ ക്രിപ്റ്റോഗ്രാഫിക് ശക്തി ഉറപ്പാക്കുന്നു. ഹാഷ് ഫംഗ്‌ഷൻ ടെക്‌സ്‌റ്റ് മാത്രമല്ല, വൈവിധ്യമാർന്ന ഡാറ്റാ തരങ്ങളിൽ ഒപ്പിടുന്നത് സാധ്യമാക്കുന്നു.

പാസ്‌വേഡുകൾ പരിശോധിക്കുന്നു

ചില ഫയൽ റിസോഴ്സുകളിലേക്കുള്ള ആക്സസ് പരിമിതപ്പെടുത്തുന്നതിനായി സ്ഥാപിതമായ പാസ്വേഡ് സ്ഥിരീകരണ അൽഗോരിതങ്ങളുടെ ഓർഗനൈസേഷനാണ് ഹാഷിംഗിന്റെ പ്രയോഗത്തിന്റെ മറ്റൊരു മേഖല. ഇത്തരം പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ചില തരത്തിലുള്ള ഹാഷ് ഫംഗ്ഷനുകൾ എങ്ങനെ ഉപയോഗിക്കാം? വളരെ ലളിതം.

മിക്ക സെർവറുകളിലും, ആക്‌സസ്സ് നിയന്ത്രണത്തിന് വിധേയമാണ്, പാസ്‌വേഡുകൾ ഹാഷ്ഡ് മൂല്യങ്ങളുടെ രൂപത്തിലാണ് സംഭരിക്കുന്നത്. ഇത് തികച്ചും യുക്തിസഹമാണ് - പാസ്‌വേഡുകൾ പ്ലെയിൻ ടെക്‌സ്‌റ്റ് ഫോമിൽ അവതരിപ്പിക്കുകയാണെങ്കിൽ, അവയിലേക്ക് ആക്‌സസ് നേടിയ ഹാക്കർമാർക്ക് രഹസ്യ ഡാറ്റ എളുപ്പത്തിൽ വായിക്കാൻ കഴിയും. അതാകട്ടെ, ഒരു ഹാഷിനെ അടിസ്ഥാനമാക്കി ഒരു പാസ്‌വേഡ് കണക്കാക്കുന്നത് എളുപ്പമല്ല.

സംശയാസ്‌പദമായ അൽഗോരിതം ഉപയോഗിക്കുമ്പോൾ ഉപയോക്തൃ ആക്‌സസ് എങ്ങനെയാണ് പരിശോധിച്ചുറപ്പിക്കുന്നത്? സെർവറിൽ സംഭരിച്ചിരിക്കുന്ന ഹാഷ് ഫംഗ്‌ഷനിൽ രേഖപ്പെടുത്തിയിരിക്കുന്നവയ്‌ക്കെതിരെ ഉപയോക്താവ് നൽകിയ പാസ്‌വേഡ് പരിശോധിക്കുന്നു. ടെക്സ്റ്റ് ബ്ലോക്കുകളുടെ മൂല്യങ്ങൾ പൊരുത്തപ്പെടുന്നെങ്കിൽ, ഉപയോക്താവിന് ഉറവിടങ്ങളിലേക്ക് ആവശ്യമായ ആക്സസ് ലഭിക്കുന്നു.

ഏറ്റവും ലളിതമായ ഹാഷ് ഫംഗ്‌ഷൻ പാസ്‌വേഡ് പരിശോധിക്കുന്നതിനുള്ള ഉപകരണമായി ഉപയോഗിക്കാം. എന്നാൽ പ്രായോഗികമായി, ഐടി സ്പെഷ്യലിസ്റ്റുകൾ മിക്കപ്പോഴും സങ്കീർണ്ണമായ മൾട്ടി-സ്റ്റേജ് ക്രിപ്റ്റോഗ്രാഫിക് അൽഗോരിതങ്ങൾ ഉപയോഗിക്കുന്നു. ചട്ടം പോലെ, സുരക്ഷിതമായ ഒരു ചാനലിലൂടെ ഡാറ്റാ ട്രാൻസ്മിഷനുള്ള മാനദണ്ഡങ്ങളുടെ ഉപയോഗം അവ പൂരകമാക്കുന്നു - അതിനാൽ ഹാക്കർമാർക്ക് ഉപയോക്താവിന്റെ കമ്പ്യൂട്ടറിൽ നിന്ന് സെർവറുകളിലേക്ക് കൈമാറുന്ന പാസ്‌വേഡ് കണ്ടെത്താനോ കണക്കാക്കാനോ കഴിയില്ല - ഹാഷ് ചെയ്ത ടെക്സ്റ്റ് ബ്ലോക്കുകൾക്കെതിരെ പരിശോധിക്കുന്നതിന് മുമ്പ്.

ഹാഷ് ഫംഗ്‌ഷൻ കൂട്ടിയിടികൾ

ഹാഷ് ഫംഗ്ഷനുകളുടെ സിദ്ധാന്തം കൂട്ടിയിടി പോലുള്ള ഒരു പ്രതിഭാസം നൽകുന്നു. അതിന്റെ സാരാംശം എന്താണ്? രണ്ട് വ്യത്യസ്ത ഫയലുകൾക്ക് ഒരേ ഹാഷ് കോഡ് ഉള്ള ഒരു സാഹചര്യമാണ് ഹാഷ് കൂട്ടിയിടി. ടാർഗെറ്റ് പ്രതീക ശ്രേണിയുടെ ദൈർഘ്യം ചെറുതാണെങ്കിൽ ഇത് സാധ്യമാണ്. ഈ സാഹചര്യത്തിൽ, ഒരു ഹാഷ് പൊരുത്തത്തിന്റെ സാധ്യത കൂടുതലായിരിക്കും.

കൂട്ടിയിടികൾ ഒഴിവാക്കുന്നതിന്, പ്രത്യേകിച്ച്, ഹാഷ് ഫംഗ്ഷൻ ഹാഷിംഗ് എന്ന ഇരട്ട അൽഗോരിതം ഉപയോഗിക്കാൻ ശുപാർശ ചെയ്യുന്നു. തുറന്നതും അടച്ചതുമായ കോഡിന്റെ രൂപീകരണം ഇതിൽ ഉൾപ്പെടുന്നു. പല പ്രോഗ്രാമർമാരും, പ്രധാനപ്പെട്ട പ്രശ്നങ്ങൾ പരിഹരിക്കുമ്പോൾ, ഇത് ആവശ്യമില്ലാത്ത സന്ദർഭങ്ങളിൽ ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കരുതെന്നും ചില കീകളുമായുള്ള മികച്ച അനുയോജ്യതയ്ക്കായി അനുബന്ധ അൽഗോരിതങ്ങൾ എല്ലായ്പ്പോഴും പരിശോധിക്കണമെന്നും ശുപാർശ ചെയ്യുന്നു.

കാഴ്ചയുടെ ചരിത്രം

ഹാഷ് ഫംഗ്ഷനുകളുടെ സിദ്ധാന്തത്തിന്റെ സ്ഥാപകരായി ഗവേഷകരായ കാർട്ടർ, വെഗ്മാൻ, സൈമൺസൺ, ബിയർബ്രൗവർ എന്നിവരെ കണക്കാക്കാം. ആദ്യ പതിപ്പുകളിൽ, അനിയന്ത്രിതമായ ദൈർഘ്യത്തിന്റെ പ്രതീക ശ്രേണികളുടെ തനതായ ഇമേജുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള ഉപകരണങ്ങളായി അനുബന്ധ അൽഗോരിതങ്ങൾ ഉപയോഗിച്ചു, അവ തിരിച്ചറിയുന്നതിനും ആധികാരികത പരിശോധിക്കുന്നതിനുമുള്ള തുടർന്നുള്ള ഉദ്ദേശ്യത്തോടെ. അതാകട്ടെ, നിർദ്ദിഷ്ട മാനദണ്ഡങ്ങൾക്കനുസൃതമായി ഹാഷിന് 30-512 ബിറ്റുകളുടെ ദൈർഘ്യം ഉണ്ടായിരിക്കണം. ഫയലുകൾ വേഗത്തിൽ തിരയുന്നതിനോ അവ അടുക്കുന്നതിനോ ഉള്ള ഒരു ഉറവിടമായി ഉപയോഗിക്കുന്നതിനുള്ള അനുയോജ്യതയായി അനുബന്ധ ഫംഗ്ഷനുകളുടെ പ്രത്യേകിച്ച് ഉപയോഗപ്രദമായ പ്രോപ്പർട്ടി കണക്കാക്കപ്പെടുന്നു.

ജനപ്രിയ ഹാഷിംഗ് മാനദണ്ഡങ്ങൾ

ഏത് ജനപ്രിയ സ്റ്റാൻഡേർഡുകളിൽ ഹാഷ് ഫംഗ്ഷനുകളെ പ്രതിനിധീകരിക്കാൻ കഴിയുമെന്ന് നമുക്ക് ഇപ്പോൾ പരിഗണിക്കാം. ഇതിൽ സി.ആർ.സി. ഈ അൽഗോരിതം ഒരു ചാക്രിക കോഡാണ്, ഇതിനെ ചെക്ക്സം എന്നും വിളിക്കുന്നു. ഈ സ്റ്റാൻഡേർഡിന്റെ സവിശേഷത ലാളിത്യവും അതേ സമയം സാർവത്രികതയും ആണ് - ഇത് ഡാറ്റയുടെ വിശാലമായ ശ്രേണി ഹാഷ് ചെയ്യാൻ ഉപയോഗിക്കാം. CRC ഏറ്റവും സാധാരണമായ ക്രിപ്‌റ്റോഗ്രാഫിക് അല്ലാത്ത അൽഗോരിതങ്ങളിൽ ഒന്നാണ്.

അതാകട്ടെ, MD4, MD5 മാനദണ്ഡങ്ങൾ എൻക്രിപ്ഷനിൽ വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നു. മറ്റൊരു ജനപ്രിയ ക്രിപ്‌റ്റോഗ്രാഫിക് അൽഗോരിതം SHA-1 ആണ്. പ്രത്യേകിച്ചും, 160 ബിറ്റുകളുടെ ഹാഷ് വലുപ്പമാണ് ഇതിന്റെ സവിശേഷത, ഇത് MD5 നേക്കാൾ വലുതാണ് - ഈ സ്റ്റാൻഡേർഡ് 128 ബിറ്റുകളെ പിന്തുണയ്ക്കുന്നു. ഹാഷ് ഫംഗ്ഷനുകളുടെ ഉപയോഗം നിയന്ത്രിക്കുന്ന റഷ്യൻ മാനദണ്ഡങ്ങൾ ഉണ്ട് - GOST R 34.11-94, അതുപോലെ തന്നെ GOST R 34.11-2012, അത് മാറ്റിസ്ഥാപിച്ചു. റഷ്യൻ ഫെഡറേഷനിൽ സ്വീകരിച്ച അൽഗോരിതങ്ങൾ നൽകുന്ന ഹാഷ് മൂല്യം 256 ബിറ്റുകൾ ആണെന്ന് ശ്രദ്ധിക്കാവുന്നതാണ്.

സംശയാസ്‌പദമായ മാനദണ്ഡങ്ങളെ വിവിധ കാരണങ്ങളാൽ തരംതിരിക്കാം. ഉദാഹരണത്തിന്, ബ്ലോക്ക്, പ്രത്യേക അൽഗോരിതങ്ങൾ ഉപയോഗിക്കുന്നവയുണ്ട്. ആദ്യ തരം മാനദണ്ഡങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ള കണക്കുകൂട്ടലുകളുടെ ലാളിത്യം പലപ്പോഴും അവയുടെ കുറഞ്ഞ വേഗതയോടൊപ്പമാണ്. അതിനാൽ, ബ്ലോക്ക് അൽഗോരിതങ്ങൾക്കുള്ള ബദലായി, ആവശ്യമായ കമ്പ്യൂട്ടേഷണൽ ഓപ്പറേഷനുകളുടെ ഒരു ചെറിയ തുക ആവശ്യമുള്ളവ ഉപയോഗിക്കാം. ഹൈ-സ്പീഡ് സ്റ്റാൻഡേർഡുകളിൽ സാധാരണയായി, പ്രത്യേകിച്ച്, മുകളിൽ സൂചിപ്പിച്ച MD4, MD5, അതുപോലെ SHA എന്നിവ ഉൾപ്പെടുന്നു. SHA ഒരു ഉദാഹരണമായി ഉപയോഗിക്കുന്ന പ്രത്യേക ഹാഷിംഗ് അൽഗോരിതങ്ങളുടെ പ്രത്യേകതകൾ നമുക്ക് സൂക്ഷ്മമായി പരിശോധിക്കാം.

SHA അൽഗോരിതത്തിന്റെ സവിശേഷതകൾ

ഡിഎസ്എ ഡോക്യുമെന്റുകൾക്കായുള്ള ഡിജിറ്റൽ സിഗ്നേച്ചർ ടൂളുകളുടെ വികസനത്തിലാണ് SHA സ്റ്റാൻഡേർഡ് അടിസ്ഥാനമാക്കിയുള്ള ഹാഷ് ഫംഗ്ഷനുകളുടെ ഉപയോഗം. ഞങ്ങൾ മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, SHA അൽഗോരിതം 160 ബിറ്റുകളുടെ ഒരു ഹാഷിനെ പിന്തുണയ്ക്കുന്നു (അക്ഷര ക്രമത്തിന്റെ "ഡൈജസ്റ്റ്" എന്ന് വിളിക്കപ്പെടുന്നവ നൽകുന്നു). തുടക്കത്തിൽ, പരിഗണനയിലുള്ള സ്റ്റാൻഡേർഡ് ഡാറ്റ അറേയെ 512 ബിറ്റുകളുടെ ബ്ലോക്കുകളായി വിഭജിക്കുന്നു. ആവശ്യമെങ്കിൽ, അവസാന ബ്ലോക്കിന്റെ ദൈർഘ്യം നിർദ്ദിഷ്ട അക്കത്തിൽ എത്തിയില്ലെങ്കിൽ, ഫയൽ ഘടന 1-ഉം ആവശ്യമായ പൂജ്യങ്ങളുടെ എണ്ണവും ചേർക്കുന്നു. അനുബന്ധ ബ്ലോക്കിന്റെ അവസാനം സന്ദേശത്തിന്റെ ദൈർഘ്യം നിശ്ചയിക്കുന്ന ഒരു കോഡ് എഴുതിയിരിക്കുന്നു. പരിഗണനയിലുള്ള അൽഗോരിതം 80 ലോജിക്കൽ ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു, അതിലൂടെ 32 ബിറ്റുകളിൽ അവതരിപ്പിച്ച 3 വാക്കുകൾ പ്രോസസ്സ് ചെയ്യുന്നു. SHA സ്റ്റാൻഡേർഡ് 4 സ്ഥിരാങ്കങ്ങളുടെ ഉപയോഗത്തിനും നൽകുന്നു.

ഹാഷിംഗ് അൽഗോരിതങ്ങളുടെ താരതമ്യം

ഞങ്ങൾ മുകളിൽ പരിശോധിച്ച റഷ്യൻ സ്റ്റാൻഡേർഡ് GOST R 34.11-94, അമേരിക്കൻ SHA എന്നിവയുടെ സവിശേഷതകൾ താരതമ്യം ചെയ്യുന്നതിനുള്ള ഉദാഹരണം ഉപയോഗിച്ച്, വ്യത്യസ്ത മാനദണ്ഡങ്ങളുമായി ബന്ധപ്പെട്ട ഹാഷ് ഫംഗ്ഷനുകളുടെ സവിശേഷതകൾ എങ്ങനെ പരസ്പരം ബന്ധപ്പെട്ടിരിക്കുന്നുവെന്ന് നമുക്ക് പഠിക്കാം. ഒന്നാമതായി, റഷ്യൻ ഫെഡറേഷനിൽ വികസിപ്പിച്ചെടുത്ത അൽഗോരിതം 1 സൈക്കിളിൽ 4 എൻക്രിപ്ഷൻ പ്രവർത്തനങ്ങൾ നടപ്പിലാക്കുന്നു എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്. ഇത് 128 റൗണ്ടുകളുമായി യോജിക്കുന്നു. 1 റൗണ്ടിൽ, SHA ഉപയോഗിക്കുമ്പോൾ, ഏകദേശം 20 കമാൻഡുകൾ കണക്കാക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു, മൊത്തം 80 റൗണ്ടുകൾ ഉണ്ട്. അങ്ങനെ, SHA ഉപയോഗിച്ച് 1 സൈക്കിളിനുള്ളിൽ 512 ബിറ്റ് ഉറവിട ഡാറ്റ പ്രോസസ്സ് ചെയ്യാൻ അനുവദിക്കുന്നു. റഷ്യൻ സ്റ്റാൻഡേർഡിന് 256 ബിറ്റ് ഡാറ്റയുടെ ഒരു സൈക്കിളിൽ പ്രവർത്തനങ്ങൾ നടത്താൻ കഴിയും.

ഏറ്റവും പുതിയ റഷ്യൻ അൽഗോരിതത്തിന്റെ പ്രത്യേകതകൾ

GOST R 34.11-94 സ്റ്റാൻഡേർഡിന് പകരം പുതിയ ഒന്ന് - GOST R 34.11-2012 “Stribog” എന്ന് ഞങ്ങൾ മുകളിൽ സൂചിപ്പിച്ചു. അതിന്റെ പ്രത്യേകതകൾ കൂടുതൽ വിശദമായി പര്യവേക്ഷണം ചെയ്യാം.

ഈ സ്റ്റാൻഡേർഡ് ഉപയോഗിച്ച്, മുകളിൽ ചർച്ച ചെയ്ത അൽഗോരിതങ്ങളുടെ കാര്യത്തിലെന്നപോലെ, ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷനുകൾ നടപ്പിലാക്കാൻ കഴിയും. ഏറ്റവും പുതിയ റഷ്യൻ സ്റ്റാൻഡേർഡ് 512-ബിറ്റ് ഇൻപുട്ട് ഡാറ്റ ബ്ലോക്കിനെ പിന്തുണയ്ക്കുന്നു എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്. GOST R 34.11-2012 ന്റെ പ്രധാന നേട്ടങ്ങൾ:

  • ബ്രേക്കിംഗ് കോഡുകൾക്കെതിരെ ഉയർന്ന തലത്തിലുള്ള സുരക്ഷ;
  • വിശ്വാസ്യത, തെളിയിക്കപ്പെട്ട ഡിസൈനുകളുടെ ഉപയോഗം പിന്തുണയ്ക്കുന്നു;
  • ഹാഷ് ഫംഗ്‌ഷന്റെ ദ്രുത കണക്കുകൂട്ടൽ, അൽ‌ഗോരിതത്തിലെ പരിവർത്തനങ്ങളുടെ അഭാവം ഫംഗ്‌ഷന്റെ രൂപകൽപ്പനയെ സങ്കീർണ്ണമാക്കുകയും കണക്കുകൂട്ടൽ മന്ദഗതിയിലാക്കുകയും ചെയ്യുന്നു.

പുതിയ റഷ്യൻ ക്രിപ്‌റ്റോഗ്രാഫിക് എൻക്രിപ്ഷൻ സ്റ്റാൻഡേർഡിന്റെ ശ്രദ്ധേയമായ ഗുണങ്ങൾ, റെഗുലേറ്ററി നിയമനിർമ്മാണത്തിലെ വ്യവസ്ഥകളിൽ നിർദ്ദേശിച്ചിരിക്കുന്ന ഏറ്റവും കർശനമായ മാനദണ്ഡങ്ങൾ പാലിക്കുന്ന ഡോക്യുമെന്റ് ഫ്ലോ സംഘടിപ്പിക്കുമ്പോൾ അത് ഉപയോഗിക്കുന്നത് സാധ്യമാക്കുന്നു.

ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്‌ഷനുകളുടെ പ്രത്യേകതകൾ

നമ്മൾ പര്യവേക്ഷണം ചെയ്യുന്ന അൽഗോരിതങ്ങളുടെ തരങ്ങൾ ക്രിപ്‌റ്റോഗ്രാഫി മേഖലയിൽ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് നമുക്ക് സൂക്ഷ്മമായി പരിശോധിക്കാം. അനുബന്ധ ഫംഗ്‌ഷനുകളുടെ പ്രധാന ആവശ്യകത ഞങ്ങൾ മുകളിൽ സൂചിപ്പിച്ച കൂട്ടിയിടികളോടുള്ള പ്രതിരോധമാണ്. അതായത്, ഈ മൂല്യങ്ങൾ ഇതിനകം അയൽ അൽഗോരിതത്തിന്റെ ഘടനയിൽ ഉണ്ടെങ്കിൽ തനിപ്പകർപ്പ് ഹാഷ് ഫംഗ്ഷൻ മൂല്യങ്ങൾ സൃഷ്ടിക്കാൻ പാടില്ല. ക്രിപ്‌റ്റോഗ്രാഫിക് ഫംഗ്‌ഷനുകൾ മുകളിൽ സൂചിപ്പിച്ച മറ്റ് മാനദണ്ഡങ്ങളും പാലിക്കണം. ഹാഷിനെ അടിസ്ഥാനമാക്കി യഥാർത്ഥ ഫയൽ പുനഃസ്ഥാപിക്കുന്നതിനുള്ള ചില സൈദ്ധാന്തിക സാധ്യതകൾ എല്ലായ്പ്പോഴും ഉണ്ടെന്ന് വ്യക്തമാണ്, പ്രത്യേകിച്ച് ശക്തമായ ഒരു കമ്പ്യൂട്ടിംഗ് ഉപകരണം ലഭ്യമാണെങ്കിൽ. എന്നിരുന്നാലും, വിശ്വസനീയമായ എൻക്രിപ്ഷൻ അൽഗോരിതങ്ങൾ കാരണം അത്തരമൊരു സാഹചര്യം ചെറുതാക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു. അതിനാൽ, ഒരു ഹാഷ് ഫംഗ്‌ഷൻ അതിന്റെ കമ്പ്യൂട്ടേഷണൽ ശക്തി 2^(n/2) ഫോർമുലയുമായി പൊരുത്തപ്പെടുന്നെങ്കിൽ അത് കണക്കാക്കുന്നത് വളരെ ബുദ്ധിമുട്ടായിരിക്കും.

ഒരു ക്രിപ്‌റ്റോഗ്രാഫിക് അൽഗോരിതത്തിന്റെ മറ്റൊരു പ്രധാന മാനദണ്ഡം യഥാർത്ഥ ഡാറ്റ അറേയുടെ തിരുത്തൽ സന്ദർഭത്തിൽ ഹാഷിലെ മാറ്റമാണ്. എൻക്രിപ്ഷൻ മാനദണ്ഡങ്ങൾ 1-ബിറ്റ് സെൻസിറ്റീവ് ആയിരിക്കണമെന്ന് ഞങ്ങൾ മുകളിൽ സൂചിപ്പിച്ചു. അതിനാൽ, ഫയലുകളിലേക്കുള്ള ആക്‌സസിന്റെ വിശ്വസനീയമായ പാസ്‌വേഡ് പരിരക്ഷ ഉറപ്പാക്കുന്നതിനുള്ള ഒരു പ്രധാന ഘടകമാണ് ഈ പ്രോപ്പർട്ടി.

ആവർത്തന പദ്ധതികൾ

ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷിംഗ് അൽഗോരിതം എങ്ങനെ നിർമ്മിക്കാമെന്ന് ഇപ്പോൾ നമുക്ക് പഠിക്കാം. ഈ പ്രശ്നം പരിഹരിക്കുന്നതിനുള്ള ഏറ്റവും സാധാരണമായ സ്കീമുകളിൽ ഒരു ആവർത്തന സീക്വൻഷ്യൽ മോഡലിന്റെ ഉപയോഗമാണ്. ഇത് കംപ്രഷൻ ഫംഗ്ഷൻ എന്ന് വിളിക്കപ്പെടുന്നതിന്റെ ഉപയോഗത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, അതിൽ ഇൻപുട്ട് ബിറ്റുകളുടെ എണ്ണം ഔട്ട്പുട്ടിൽ പിടിച്ചെടുക്കുന്നതിനേക്കാൾ വളരെ കൂടുതലാണ്.

തീർച്ചയായും, കംപ്രഷൻ ഫംഗ്ഷൻ ആവശ്യമായ ക്രിപ്റ്റോഗ്രാഫിക് ശക്തി മാനദണ്ഡങ്ങൾ പാലിക്കണം. ഒരു ഇന്ററാക്ടീവ് സ്കീമിൽ, ഇൻപുട്ട് ഡാറ്റ സ്ട്രീം പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള ആദ്യ പ്രവർത്തനം ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു, അതിന്റെ വലുപ്പം ബിറ്റുകളിൽ കണക്കാക്കുന്നു. ഒരു നിശ്ചിത എണ്ണം ബിറ്റുകളുടെ താൽക്കാലിക വേരിയബിളുകളും അനുബന്ധ അൽഗോരിതം ഉപയോഗിക്കുന്നു. അറിയപ്പെടുന്ന ഒരു നമ്പർ ആദ്യ മൂല്യമായി ഉപയോഗിക്കുന്നു, അതേസമയം ഡാറ്റയുടെ തുടർന്നുള്ള ബ്ലോക്കുകൾ ഒരു ഔട്ട്‌പുട്ടായി ചോദ്യം ചെയ്യപ്പെടുന്ന ഫംഗ്‌ഷന്റെ മൂല്യവുമായി സംയോജിപ്പിക്കുന്നു. ആദ്യ മൂല്യം ഉൾപ്പെടെ, മുഴുവൻ ഇൻപുട്ട് സ്ട്രീമും കണക്കിലെടുക്കുന്ന അവസാന ആവർത്തനത്തിനുള്ള ഔട്ട്പുട്ട് ബിറ്റുകളായി ഹാഷ് മൂല്യം മാറുന്നു. ഹാഷിംഗിന്റെ "അവലാഞ്ച് പ്രഭാവം" എന്ന് വിളിക്കപ്പെടുന്നവയാണ് നൽകിയിരിക്കുന്നത്.

ഇൻപുട്ട് സ്ട്രീം യഥാർത്ഥ ഡാറ്റ അറേ വിഭജിച്ചിരിക്കുന്ന ബ്ലോക്കിന്റെ വലുപ്പത്തിന് സമാനമല്ലെങ്കിൽ ഹാഷ് ഫംഗ്ഷനുകൾ നിർമ്മിക്കാൻ ചിലപ്പോൾ ബുദ്ധിമുട്ടാണ് എന്നതാണ് ഒരു ആവർത്തന സ്കീമായി നടപ്പിലാക്കിയ ഹാഷിംഗിനെ ചിത്രീകരിക്കുന്ന പ്രധാന ബുദ്ധിമുട്ട്. എന്നാൽ ഈ സാഹചര്യത്തിൽ, ഹാഷിംഗ് സ്റ്റാൻഡേർഡിൽ യഥാർത്ഥ സ്ട്രീം ഒരു തരത്തിൽ അല്ലെങ്കിൽ മറ്റൊന്നിൽ വികസിപ്പിക്കാൻ കഴിയുന്ന അൽഗോരിതങ്ങൾ അടങ്ങിയിരിക്കാം.

ചില സന്ദർഭങ്ങളിൽ, ആവർത്തന സ്കീമിനുള്ളിലെ ഡാറ്റ പ്രോസസ്സിംഗ് പ്രക്രിയയിൽ മൾട്ടി-പാസ് അൽഗോരിതങ്ങൾ എന്ന് വിളിക്കപ്പെടുന്നവ ഉപയോഗിച്ചേക്കാം. അതിലും തീവ്രമായ "ഹിമപാത പ്രഭാവം" രൂപപ്പെടാൻ അവർ നിർദ്ദേശിക്കുന്നു. അത്തരമൊരു സാഹചര്യത്തിൽ ആവർത്തിച്ചുള്ള ഡാറ്റാ സെറ്റുകളുടെ രൂപീകരണം ഉൾപ്പെടുന്നു, രണ്ടാം സ്ഥാനത്ത് മാത്രമേ വിപുലീകരണം സംഭവിക്കൂ.

ബ്ലോക്ക് അൽഗോരിതം

കംപ്രഷൻ ഫംഗ്‌ഷൻ എൻക്രിപ്ഷൻ നടത്തുന്ന ബ്ലോക്ക് അൽഗോരിതം അടിസ്ഥാനമാക്കിയുള്ളതാകാം. അതിനാൽ, സുരക്ഷയുടെ നിലവാരം വർദ്ധിപ്പിക്കുന്നതിന്, നിലവിലെ ആവർത്തനത്തിൽ ഹാഷിംഗിന് വിധേയമായ ഡാറ്റ ബ്ലോക്കുകൾ നിങ്ങൾക്ക് ഒരു കീയായി ഉപയോഗിക്കാം, കൂടാതെ മുമ്പ് കംപ്രഷൻ ഫംഗ്ഷൻ നടപ്പിലാക്കുമ്പോൾ ലഭിച്ച പ്രവർത്തനങ്ങളുടെ ഫലം - ഒരു ഇൻപുട്ടായി. തൽഫലമായി, അവസാന ആവർത്തനം അൽഗോരിതത്തിന്റെ ഔട്ട്പുട്ട് നൽകും. ഹാഷിംഗിന്റെ സുരക്ഷ, ഉപയോഗിച്ച അൽഗോരിതത്തിന്റെ ദൃഢതയുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു.

എന്നിരുന്നാലും, ഞങ്ങൾ മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, വിവിധ തരം ഹാഷ് ഫംഗ്ഷനുകൾ കണക്കിലെടുക്കുമ്പോൾ, ബ്ലോക്ക് അൽഗോരിതങ്ങൾ പലപ്പോഴും വലിയ കമ്പ്യൂട്ടിംഗ് പവർ ഉപയോഗിക്കേണ്ടതിന്റെ ആവശ്യകതയ്‌ക്കൊപ്പമാണ്. അവ ലഭ്യമല്ലെങ്കിൽ, ഹാഷ് ഫംഗ്ഷനുകളുടെ ഉപയോഗവുമായി ബന്ധപ്പെട്ട പ്രായോഗിക പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഫയൽ പ്രോസസ്സിംഗ് വേഗത മതിയാകില്ല. അതേ സമയം, സോഴ്സ് ഡാറ്റ സ്ട്രീമുകളുള്ള ഒരു ചെറിയ എണ്ണം പ്രവർത്തനങ്ങൾ ഉപയോഗിച്ച് ആവശ്യമായ ക്രിപ്റ്റോഗ്രാഫിക് ശക്തി കൈവരിക്കാൻ കഴിയും; പ്രത്യേകിച്ചും, ഞങ്ങൾ പരിഗണിച്ച അൽഗോരിതങ്ങൾ - MD5, SHA, റഷ്യൻ ക്രിപ്റ്റോഗ്രാഫിക് എൻക്രിപ്ഷൻ മാനദണ്ഡങ്ങൾ - അത്തരം പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിന് അനുയോജ്യമാണ്.

ഹാഷിംഗ്(ചിലപ്പോൾ ഹാഷിംഗ്, ഇംഗ്ലീഷ് ഹാഷിംഗ്) - അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു ഇൻപുട്ട് ഡാറ്റ അറേയെ ഒരു നിശ്ചിത ദൈർഘ്യത്തിന്റെ ഔട്ട്പുട്ട് സ്ട്രിംഗാക്കി മാറ്റുന്നു. അത്തരം പരിവർത്തനങ്ങൾ എന്നും വിളിക്കപ്പെടുന്നു ഹാഷ് ഫംഗ്ഷനുകൾഅഥവാ കൺവ്യൂഷൻ പ്രവർത്തനങ്ങൾ, ഇൻപുട്ട് അറേ - പ്രോട്ടോടൈപ്പ്, പരിവർത്തന ഫലങ്ങൾ എന്നിവയാണ് ഹാഷ്, ഹാഷ് കോഡ്, ഹാഷ് ഇമേജ്, ഡിജിറ്റൽ ഫിംഗർപ്രിന്റ്അഥവാ സന്ദേശം ഡൈജസ്റ്റ്(ഇംഗ്ലീഷ് സന്ദേശ ഡൈജസ്റ്റ്).

ഹാഷ് ഫംഗ്ഷൻ- അനിയന്ത്രിതമായ ദൈർഘ്യത്തിന്റെ (പ്രീമേജ്) പ്രാരംഭ സന്ദേശത്തെ നിശ്ചിത ദൈർഘ്യമുള്ള (ഹാഷ് ഇമേജ്) സന്ദേശമായി പരിവർത്തനം ചെയ്യുന്ന എളുപ്പത്തിൽ കണക്കാക്കാവുന്ന ഫംഗ്ഷൻ, ഇതിന് ഫലപ്രദമായ കൂട്ടിയിടി തിരയൽ അൽഗോരിതം ഇല്ല.

കൂട്ടിയിടിപ്രവർത്തനത്തിന് എച്ച്ഒരു ജോടി മൂല്യങ്ങൾ എന്ന് വിളിക്കുന്നു x, y, x ≠ y, അത്തരം h(x) = h(y). അത്. ഹാഷ് ഫംഗ്‌ഷന് ഇനിപ്പറയുന്ന ഗുണങ്ങൾ ഉണ്ടായിരിക്കണം:

നൽകിയിരിക്കുന്ന മൂല്യത്തിന് h(x)ആർഗ്യുമെന്റ് മൂല്യം കണ്ടെത്താൻ കഴിയുന്നില്ല x. അത്തരം ഹാഷ് ഫംഗ്ഷനുകളെ വിളിക്കുന്നു ചികിത്സയുടെ കാര്യത്തിൽ സ്ഥിരത പുലർത്തുന്നുഅഥവാ ശക്തമായ അർത്ഥത്തിൽ സ്ഥിരതയുള്ള;

തന്നിരിക്കുന്ന ഒരു വാദത്തിന് xമറ്റൊരു വാദം കണ്ടെത്താൻ കഴിയുന്നില്ല വൈഅത്തരം h(x) = h(y). അത്തരം ഹാഷ് ഫംഗ്ഷനുകളെ വിളിക്കുന്നു കൂട്ടിയിടി കണക്കുകൂട്ടലുകളുടെ കാര്യത്തിൽ ശക്തമാണ്അഥവാ ദുർബലമായ അർത്ഥത്തിൽ സ്ഥിരതയുള്ള.

ഹാഷ് ഫംഗ്‌ഷൻ മൂല്യം പ്രിമേജിനെ മാത്രമല്ല, സ്വകാര്യ കീയെയും ആശ്രയിക്കുന്ന സാഹചര്യത്തിൽ, ഈ മൂല്യത്തെ മെസേജ് ഓതന്റിക്കേഷൻ കോഡ് (MAC), ഡാറ്റ ഓതന്റിക്കേഷൻ കോഡ് (DAC) അല്ലെങ്കിൽ അനുകരണം ചേർക്കൽ.

പ്രായോഗികമായി, ഇനിപ്പറയുന്ന ആവശ്യങ്ങൾക്കായി ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു:

ഡാറ്റാബേസിൽ ഡാറ്റ തിരയൽ വേഗത്തിലാക്കാൻ;

ഡാറ്റ വീണ്ടെടുക്കൽ വേഗത്തിലാക്കുക. ഉദാഹരണത്തിന്, ടെക്സ്റ്റ് ഫീൽഡുകൾ ഒരു ഡാറ്റാബേസിലേക്ക് എഴുതുമ്പോൾ, അവയുടെ ഹാഷ് കോഡ് കണക്കാക്കുകയും ഡാറ്റ ആ ഹാഷ് കോഡിന് അനുയോജ്യമായ ഒരു വിഭാഗത്തിൽ സ്ഥാപിക്കുകയും ചെയ്യാം. തുടർന്ന്, ഡാറ്റയ്ക്കായി തിരയുമ്പോൾ, നിങ്ങൾ ആദ്യം ടെക്സ്റ്റിന്റെ ഹാഷ് കോഡ് കണക്കാക്കേണ്ടതുണ്ട്, ഏത് വിഭാഗത്തിലാണ് നിങ്ങൾ അത് തിരയേണ്ടതെന്ന് നിങ്ങൾക്ക് ഉടനടി അറിയാം, അതായത്. നിങ്ങൾ മുഴുവൻ ഡാറ്റാബേസിലൂടെയല്ല, അതിന്റെ ഒരു വിഭാഗത്തിലൂടെ മാത്രമേ തിരയേണ്ടതുള്ളൂ (ഇത് തിരയലിനെ വളരെയധികം വേഗത്തിലാക്കുന്നു).

ഈ കേസിൽ ഹാഷിംഗിന്റെ ഒരു സാധാരണ അനലോഗ് അക്ഷരമാലാക്രമത്തിൽ നിഘണ്ടുവിൽ വാക്കുകൾ സ്ഥാപിക്കുന്നതാണ്. ഒരു വാക്കിന്റെ ആദ്യ അക്ഷരം അതിന്റെ ഹാഷ് കോഡാണ്, തിരയുമ്പോൾ, ഞങ്ങൾ നിഘണ്ടു മുഴുവൻ നോക്കുന്നില്ല, മറിച്ച് ആവശ്യമുള്ള അക്ഷരമുള്ള ഭാഗം മാത്രം.

ഹാഷ് ഫംഗ്ഷന്റെ കണക്കുകൂട്ടൽ നടപടിക്രമം (സ്റ്റാൻഡേർഡ് അൽഗോരിതം ഡയഗ്രം) ഇനിപ്പറയുന്ന ചിത്രത്തിൽ അവതരിപ്പിച്ചിരിക്കുന്നു.

ചിത്രം 10.1. ഒരു ഹാഷ് മൂല്യം കണക്കാക്കുന്നതിനുള്ള നടപടിക്രമം

1) യഥാർത്ഥ സന്ദേശത്തിലേക്ക് ടിസഹായ വിവരങ്ങൾ ചേർത്തു (ഉദാഹരണത്തിന്, മുൻചിത്രത്തിന്റെ ദൈർഘ്യം, സഹായ ചിഹ്നങ്ങൾ മുതലായവ) അങ്ങനെ മുൻചിത്രത്തിന്റെ ദൈർഘ്യം എക്സ്യുടെ ഗുണിതമായി Lbl, ഹാഷ് ഫംഗ്ഷൻ സ്പെസിഫിക്കേഷൻ (സ്റ്റാൻഡേർഡ്) നിർവചിച്ചിരിക്കുന്നത്.

2) ഹാഷിംഗ് നടപടിക്രമം ആരംഭിക്കുന്നതിന്, ഒരു സിൻക്രൊണൈസേഷൻ സന്ദേശം ഉപയോഗിക്കുന്നു y 0.

3) പ്രോട്ടോടൈപ്പ് എക്സ്വിഘടിക്കുന്നു എൻബ്ലോക്കുകൾ x i(i = 1 .. n) നിശ്ചിത ദൈർഘ്യം Lbl, അതേ തരത്തിലുള്ള ഹാഷിംഗ് നടപടിക്രമം നടത്തുന്നു f(y i-1 , x i), മുമ്പത്തെ ബ്ലോക്കിന്റെ ഹാഷിംഗ് ഫലം അനുസരിച്ച് y i-1.

4) ഹാഷ് വേ h(T)യഥാർത്ഥ സന്ദേശം ടിഹാഷിംഗ് നടപടിക്രമത്തിന്റെ ഫലമായിരിക്കും വൈ എൻ, അവസാന ബ്ലോക്ക് പ്രോസസ്സ് ചെയ്ത ശേഷം ലഭിച്ചു x n.

10.2 MD5

MD5 1991-ൽ മസാച്യുസെറ്റ്സ് ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് ടെക്നോളജിയിലെ (എംഐടി) പ്രൊഫസർ റൊണാൾഡ് എൽ റിവെസ്റ്റ് വികസിപ്പിച്ചെടുത്ത 128-ബിറ്റ് ഹാഷിംഗ് അൽഗോരിതം ആണ് മെസേജ് ഡൈജസ്റ്റ് 5. ഇത് MD4-ന്റെ സുരക്ഷ മെച്ചപ്പെടുത്തിയ പതിപ്പാണ്.

ഹാഷ് കണക്കുകൂട്ടൽ അൽഗോരിതം ചുവടെയുണ്ട്.

1. ഫ്ലോ ഇക്വലൈസേഷൻ.

യഥാർത്ഥ സന്ദേശത്തിന്റെ അവസാനം, ദൈർഘ്യം എൽ, ഒരു ബിറ്റ് ചേർക്കുക, തുടർന്ന് ആവശ്യമുള്ള എണ്ണം സീറോ ബിറ്റുകൾ ചേർക്കുക, അങ്ങനെ പുതിയ വലുപ്പം L" 448 മോഡുലോ 512 (L’ മോഡ് 512 = 448) മായി താരതമ്യപ്പെടുത്താവുന്നതാണ്. ഒരു ബിറ്റ് ഉൾപ്പെടെയുള്ള പുതിയ ദൈർഘ്യം ഇതിനകം 448 ആയി താരതമ്യപ്പെടുത്താവുന്നതാണെങ്കിൽ പോലും പൂജ്യം ബിറ്റുകളുടെ കൂട്ടിച്ചേർക്കൽ നടപ്പിലാക്കുന്നു.

2. സന്ദേശ ദൈർഘ്യം ചേർക്കുന്നു.

പരിഷ്കരിച്ച സന്ദേശത്തിലേക്ക് ഡാറ്റാ ദൈർഘ്യത്തിന്റെ 64-ബിറ്റ് പ്രതിനിധാനം (സന്ദേശത്തിലെ ബിറ്റുകളുടെ എണ്ണം) ചേർത്തിരിക്കുന്നു. ആ. സന്ദേശ ദൈർഘ്യം ടി 512 ന്റെ ഗുണിതമാകുന്നു (T mod 512 = 0). യഥാർത്ഥ സന്ദേശത്തിന്റെ ദൈർഘ്യം 2 64 - 1 കവിയുന്നുവെങ്കിൽ, താഴെയുള്ള 64 ബിറ്റുകൾ മാത്രമേ ചേർക്കൂ. കൂടാതെ, ഒരു നിർദ്ദിഷ്ട 64-ബിറ്റ് ദൈർഘ്യമുള്ള പ്രാതിനിധ്യത്തിന്, ലോ-ഓർഡർ 32 ബിറ്റുകൾ ആദ്യം എഴുതുന്നു, തുടർന്ന് ഉയർന്ന ഓർഡർ 32 ബിറ്റുകൾ.

3. ബഫർ സമാരംഭം.

കണക്കുകൂട്ടലുകൾക്കായി, 32 ബിറ്റുകൾ വീതമുള്ള 4 വേരിയബിളുകൾ സമാരംഭിക്കുകയും പ്രാരംഭ മൂല്യങ്ങൾ സജ്ജമാക്കുകയും ചെയ്യുന്നു (ഹെക്സാഡെസിമൽ പ്രാതിനിധ്യം):

= 67 45 23 01;
ബി= EF CD AB 89;
സി= 98 BA DC FE;
ഡി = 10 32 54 76.

ഈ വേരിയബിളുകൾ ഇന്റർമീഡിയറ്റ് കണക്കുകൂട്ടലുകളുടെ ഫലങ്ങൾ സംഭരിക്കും. പ്രാരംഭ അവസ്ഥ എ ബി സി ഡിഇനീഷ്യലൈസേഷൻ വെക്റ്റർ എന്ന് വിളിക്കുന്നു.

4. ഒരു ലൂപ്പിൽ ഹാഷ് കണക്കുകൂട്ടൽ.

യഥാർത്ഥ സന്ദേശം ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു ടി, 512 ബിറ്റുകൾ നീളം. സൈക്കിളിലെ ഓരോ ബ്ലോക്കിനും, ചിത്രം 10.2 ൽ കാണിച്ചിരിക്കുന്ന നടപടിക്രമം നടപ്പിലാക്കുന്നു. യഥാർത്ഥ സന്ദേശത്തിന്റെ എല്ലാ ബ്ലോക്കുകളും 32-ബിറ്റ് വേരിയബിൾ മൂല്യങ്ങളുടെ യൂണിയൻ ആയി പ്രോസസ്സ് ചെയ്യുന്നതിന്റെ ഫലം എ ബി സി ഡിഒരു ഹാഷ് ആയിരിക്കും.

ചിത്രം 10.2. ഹാഷ് കണക്കുകൂട്ടൽ പ്രധാന ലൂപ്പ് ഘട്ടം

ഓരോ റൗണ്ടിലും ഓവർ വേരിയബിളുകൾ എ ബി സി ഡിസോഴ്സ് ടെക്സ്റ്റ് ബ്ലോക്കും ടിഒരു ചക്രത്തിൽ (16 ആവർത്തനങ്ങൾ) സമാനമായ പരിവർത്തനങ്ങൾ ഇനിപ്പറയുന്ന സ്കീം അനുസരിച്ച് നടത്തുന്നു.

ചിത്രം 10.3. ഒരു റൗണ്ട് ലൂപ്പ് ആവർത്തനം

കൺവെൻഷനുകൾ.

1) RF- ഇനിപ്പറയുന്ന പട്ടിക അനുസരിച്ച് റൗണ്ട് ഫംഗ്ഷൻ നിർണ്ണയിക്കപ്പെടുന്നു.

പട്ടിക 10.1. RF റൗണ്ട് പ്രവർത്തനങ്ങൾ

2) ടി ജെ- യഥാർത്ഥ സന്ദേശ ബ്ലോക്കിന്റെ j-th 32-ബിറ്റ് ഭാഗം ടിവലിയ എൻഡിയൻ;

3) കെ ഐ- ഫോർമുല നിർണ്ണയിക്കുന്ന സ്ഥിരാങ്കത്തിന്റെ പൂർണ്ണസംഖ്യ

k i = 2 32 * | sin(i + 16 * (r - 1)) |, (10.1)

ഇവിടെ i ആണ് ലൂപ്പ് ആവർത്തന നമ്പർ (i = 1..16);
r - റൗണ്ട് നമ്പർ (r = 1..4).

പാപ പ്രവർത്തനത്തിന്റെ വാദം റേഡിയൻസിൽ അളക്കുന്നു.

4) ⊞ - കൂട്ടിച്ചേർക്കൽ മൊഡ്യൂളോ 2 32.

5) <<< എസ് ഐ- s i അക്കങ്ങൾ കൊണ്ട് ഇടത്തേക്ക് ചാക്രിക ഷിഫ്റ്റ്.

യഥാർത്ഥ സന്ദേശ ബ്ലോക്കിന്റെ 32-ബിറ്റ് ഭാഗം ഉപയോഗിച്ചു ടി ജെചാക്രിക ഇടത് ഷിഫ്റ്റിന്റെ അളവും എസ് ഐആവർത്തന സംഖ്യയെ ആശ്രയിച്ചിരിക്കുന്നു, അവ ഇനിപ്പറയുന്ന പട്ടികയിൽ കാണിച്ചിരിക്കുന്നു.

പട്ടിക 10.2. റൗണ്ട് സൈക്കിൾ ഘട്ടത്തിൽ ഉപയോഗിക്കുന്ന അളവ്

ആവർത്തന നമ്പർ1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
റൗണ്ട് 1ടി ജെടി 1ടി 2ടി 3ടി 4ടി 5ടി 6ടി 7ടി 8ടി 9ടി 10ടി 11ടി 12ടി 13ടി 14ടി 15ടി 16
എസ് ഐ7 12 17 22 7 12 17 22 7 12 17 22 7 12 17 22
റൗണ്ട് 2ടി ജെടി 2ടി 7ടി 12ടി 1ടി 6ടി 11ടി 16ടി 5ടി 10ടി 15ടി 4ടി 9ടി 14ടി 3ടി 8ടി 13
എസ് ഐ5 9 14 20 5 9 14 20 5 9 14 20 5 9 14 20
റൗണ്ട് 3ടി ജെടി 6ടി 9ടി 12ടി 15ടി 2ടി 5ടി 8ടി 11ടി 14ടി 1ടി 4ടി 7ടി 10ടി 13ടി 16ടി 3
എസ് ഐ4 11 16 23 4 11 16 23 4 11 16 23 4 11 16 23
റൗണ്ട് 4ടി ജെടി 1ടി 8ടി 15ടി 6ടി 13ടി 4ടി 11ടി 2ടി 9ടി 16ടി 7ടി 14ടി 5ടി 12ടി 3ടി 10
എസ് ഐ6 10 15 21 6 10 15 21 6 10 15 21 6 10 15 21

4 റൗണ്ടുകൾക്ക് ശേഷം, ഓരോ വേരിയബിളിനും പുതിയ (പരിഷ്കരിച്ച) മൂല്യം എ ബി സി ഡിഒറിജിനലിലേക്ക് (⊞) ചേർക്കുന്നു (ഒന്നാം റൗണ്ടിന് മുമ്പുള്ള വേരിയബിളിന്റെ മൂല്യം).

5. എബിസിഡി വേരിയബിളുകളിൽ ബൈറ്റുകൾ പുനഃക്രമീകരിക്കുന്നു. യഥാർത്ഥ സന്ദേശത്തിന്റെ എല്ലാ ബ്ലോക്കുകളും പ്രോസസ്സ് ചെയ്ത ശേഷം, ഓരോ വേരിയബിളിനും ഒരു റിവേഴ്സ് ബൈറ്റ് സ്വാപ്പ് നടത്തുന്നു.

കൂട്ടിയിടികൾക്കായി തിരയുക.

2004-ൽ, ചൈനീസ് ഗവേഷകരായ വാങ് സിയോയുൻ, ഫെങ് ഡെങ്‌ഗുവോ, ലായ് സ്യൂജിയ, യു ഹോങ്‌ബോ എന്നിവർ കൂട്ടിയിടികൾ കണ്ടെത്താൻ IBM p690) അനുവദിച്ച അൽഗരിതത്തിൽ ഒരു അപകടസാധ്യത കണ്ടെത്തിയതായി പ്രഖ്യാപിച്ചു.

10.3 ഒരു ഹാഷ് ഇമേജ് ലഭിക്കുന്നതിന് എൻക്രിപ്ഷൻ ഉപയോഗിക്കുന്നു

കൂട്ടിയിടി-പ്രതിരോധശേഷിയുള്ള ഹാഷ് ഇമേജ് സൃഷ്ടിക്കുന്നതിന്, ബ്ലോക്ക് സൈഫറുകളിൽ നൽകിയിരിക്കുന്ന പ്രത്യേക മോഡുകൾ (ഉദാഹരണത്തിന്, സൈഫർ ബ്ലോക്കുകളുടെ y കോൺകാറ്റനേഷൻ) ഉപയോഗിക്കാം, അല്ലെങ്കിൽ ഹാഷ് ഫംഗ്ഷനിൽ തന്നെ, ഒരു ഘടകമായി, ബ്ലോക്ക് സൈഫർ മോഡുകളിലൊന്ന് ഉപയോഗിക്കാം ( ഉദാഹരണത്തിന്, GOST 34.11-94 1 അനുസരിച്ച് ഒരു ഘടകം ഹാഷ് -ഫംഗ്ഷനുകൾ 2 അനുസരിച്ച് ക്രിപ്റ്റോഗ്രാഫിക് കൺവേർഷൻ അൽഗോരിതം ലളിതമായി മാറ്റിസ്ഥാപിക്കുന്ന ഒരു മോഡാണ്.

ഹാഷ് ഫംഗ്‌ഷൻ മൂല്യം പ്രോട്ടോടൈപ്പിനെ മാത്രമല്ല, സ്വകാര്യ കീയെയും ആശ്രയിക്കുമ്പോൾ, ഹാഷ് ഇമേജിനെ സന്ദേശ പ്രാമാണീകരണ കോഡ് (MAC), ഡാറ്റ ഓതന്റിക്കേഷൻ കോഡ് (DAC) അല്ലെങ്കിൽ അനുകരണം ചേർക്കൽ.

ഒരു ഉദാഹരണമായി, ഞങ്ങൾ മോഡ് (സിഫർ ബ്ലോക്ക് ചെയിനിംഗ്) നൽകും.

ചിത്രം 10.4. സൈഫർ ബ്ലോക്ക് ചെയിനിംഗ് മോഡിൽ DES അൽഗോരിതത്തിന്റെ സ്കീം

അവസാനം എൻക്രിപ്റ്റ് ചെയ്ത ബ്ലോക്ക് Cnസന്ദേശത്തിന്റെ ഒരു ഹാഷ് ഇമേജും ഉണ്ട് T = (T 1, T 2, ..., T n).

1 GOST 34.11-94 “വിവര സാങ്കേതികവിദ്യ. ക്രിപ്‌റ്റോഗ്രാഫിക് വിവര സംരക്ഷണം. ഹാഷ് ഫംഗ്ഷൻ."

2 GOST 28147-89 “വിവര സംസ്കരണ സംവിധാനങ്ങൾ. ക്രിപ്റ്റോഗ്രാഫിക് സംരക്ഷണം. ക്രിപ്‌റ്റോഗ്രാഫിക് കൺവേർഷൻ അൽഗോരിതം."

സ്വയം പരിശോധനാ ചോദ്യങ്ങൾ

1. ആശയങ്ങൾ നിർവ്വചിക്കുക: "", "", "".

ഞങ്ങൾ പരിഗണിച്ച തിരയൽ അൽഗോരിതങ്ങൾ സാധാരണയായി ഒരു അമൂർത്ത താരതമ്യ പ്രവർത്തനത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. ഈ ശ്രേണിയിൽ നിന്ന് വേറിട്ടുനിൽക്കുന്നത് "സിംബൽ ടേബിളുകളും ബൈനറി സെർച്ച് ട്രീകളും" എന്നതിൽ വിവരിച്ചിരിക്കുന്ന വിതരണ തിരയൽ രീതിയാണ്, അതിൽ കീ ഐ ഉള്ള ഘടകം പട്ടികയുടെ i-th സ്ഥാനത്ത് സംഭരിച്ചിരിക്കുന്നു, അത് നേരിട്ട് ആക്സസ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. ഡിസ്ട്രിബ്യൂട്ടീവ് തിരയൽ ഒരു താരതമ്യ പ്രവർത്തനത്തിന്റെ ഓപ്പറണ്ടുകളേക്കാൾ പ്രധാന മൂല്യങ്ങളെ അറേ സൂചികകളായി ഉപയോഗിക്കുന്നു; പട്ടിക സൂചികകളുടെ അതേ ശ്രേണിയിൽ നിന്ന് കീകൾ വ്യത്യസ്ത പൂർണ്ണസംഖ്യകളാണെന്ന വസ്തുതയെ അടിസ്ഥാനമാക്കിയുള്ളതാണ് ഈ രീതി. ഈ അധ്യായത്തിൽ, കീകൾക്ക് അത്തരം സൗകര്യപ്രദമായ പ്രോപ്പർട്ടികൾ ഇല്ലാത്ത കൂടുതൽ സാധാരണ തിരയൽ ആപ്ലിക്കേഷനുകളിൽ ഉപയോഗിക്കുന്ന ഡിസ്ട്രിബ്യൂട്ടീവ് തിരയലിന്റെ വിപുലമായ പതിപ്പായ ഹാഷിംഗിനെക്കുറിച്ച് ഞങ്ങൾ നോക്കാം. ഈ സമീപനത്തിന്റെ അന്തിമഫലം താരതമ്യാധിഷ്ഠിത രീതികളിൽ നിന്ന് തികച്ചും വ്യത്യസ്തമാണ് - ലുക്ക്അപ്പ് കീകളെ മൂലകങ്ങളിലെ കീകളുമായി താരതമ്യം ചെയ്ത് നിഘണ്ടു ഡാറ്റ ഘടനകളിലൂടെ നാവിഗേറ്റ് ചെയ്യുന്നതിനുപകരം, കീകളുടെ ഗണിത പരിവർത്തനം നടത്തി പട്ടികയിലെ ഘടകങ്ങൾ നേരിട്ട് ആക്സസ് ചെയ്യാൻ ഞങ്ങൾ ശ്രമിക്കുന്നു. വിലാസങ്ങൾ പട്ടികയിലേക്ക്.

ഹാഷിംഗ് ഉപയോഗിച്ചുള്ള തിരയൽ അൽഗോരിതങ്ങൾക്ക് രണ്ട് വ്യത്യസ്ത ഭാഗങ്ങളുണ്ട്. തിരയൽ കീയെ പട്ടികയിലെ വിലാസമാക്കി മാറ്റുന്ന ഒരു ഹാഷ് ഫംഗ്ഷൻ കണക്കാക്കുക എന്നതാണ് ആദ്യപടി. വ്യത്യസ്തമായ കീകൾ വ്യത്യസ്ത വിലാസങ്ങളിലേക്ക് മാപ്പ് ചെയ്യും, പക്ഷേ പലപ്പോഴും രണ്ടോ അതിലധികമോ വ്യത്യസ്ത കീകൾക്ക് പട്ടികയിലെ ഒരേ വിലാസത്തിലേക്ക് മാപ്പ് ചെയ്യാൻ കഴിയും. അതിനാൽ, ഹാഷിംഗ് സെർച്ചിന്റെ രണ്ടാം ഭാഗം അത്തരം കീകൾ കൈകാര്യം ചെയ്യുന്ന കൂട്ടിയിടി റെസലൂഷൻ പ്രക്രിയയാണ്. ഈ അധ്യായത്തിൽ നമ്മൾ നോക്കുന്ന വൈരുദ്ധ്യ പരിഹാര സാങ്കേതികതകളിലൊന്ന് ലിങ്ക്ഡ് ലിസ്റ്റുകൾ ഉപയോഗിക്കുന്നു, അതിനാൽ തിരയൽ കീകളുടെ എണ്ണം മുൻകൂട്ടി പ്രവചിക്കാൻ ബുദ്ധിമുട്ടുള്ള ചലനാത്മക സാഹചര്യങ്ങളിൽ ഇതിന് ഉടനടി പ്രയോഗമുണ്ട്. മറ്റ് രണ്ട് കൂട്ടിയിടി മിഴിവ് രീതികൾ ഉയർന്ന നേട്ടം കൈവരിക്കുന്നു പ്രകടനംഘടകങ്ങൾ ഒരു നിശ്ചിത അറേയിൽ സംഭരിച്ചിരിക്കുന്നതിനാൽ തിരയുക. ഈ രീതികൾ മെച്ചപ്പെടുത്തുന്നതിനുള്ള ഒരു മാർഗം ഞങ്ങൾ പരിഗണിക്കും, പട്ടികയുടെ വലിപ്പം മുൻകൂട്ടി പ്രവചിക്കാൻ കഴിയാത്ത സന്ദർഭങ്ങളിൽ അവ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു.

സമയവും ഓർമ്മയും തമ്മിലുള്ള സന്തുലിതാവസ്ഥയുടെ മികച്ച ഉദാഹരണമാണ് ഹാഷിംഗ്. ഉപയോഗിച്ച മെമ്മറിയുടെ അളവിൽ പരിധി ഇല്ലെങ്കിൽ, ഒരു വിതരണ തിരയലിലെന്നപോലെ, ഒരു മെമ്മറി വിലാസമായി കീ ഉപയോഗിച്ച്, ഒരു മെമ്മറി ആക്സസ് ഉപയോഗിച്ച് ഏത് തിരച്ചിലും നടത്താം. എന്നിരുന്നാലും, ഈ അനുയോജ്യമായ കേസ് സാധാരണയായി നേടാനാവില്ല, കാരണം നീളമുള്ള കീകൾക്ക് വലിയ അളവിലുള്ള മെമ്മറി ആവശ്യമായി വരും. മറുവശത്ത്, നിയന്ത്രണങ്ങളൊന്നും ഉണ്ടായിരുന്നില്ലെങ്കിൽ ലീഡ് ടൈം, സീക്വൻഷ്യൽ സെർച്ച് രീതി ഉപയോഗിച്ച് ഏറ്റവും കുറഞ്ഞ മെമ്മറി ഉപയോഗിച്ച് അത് നേടാനാകും. മെമ്മറിയും സമയവും ന്യായമായ അളവിൽ ഉപയോഗിക്കുന്നതിനും ഈ രണ്ട് തീവ്രതകൾക്കിടയിൽ സന്തുലിതാവസ്ഥ കൈവരിക്കുന്നതിനുമുള്ള ഒരു മാർഗമാണ് ഹാഷിംഗ്. പ്രത്യേകിച്ചും, കോഡ് മാറ്റിയെഴുതുന്നതിനോ വ്യത്യസ്ത അൽഗോരിതങ്ങൾ തിരഞ്ഞെടുക്കുന്നതിനോ പകരം, പട്ടികയുടെ വലുപ്പം മാറ്റുന്നതിലൂടെ നിങ്ങൾക്ക് ഏത് ബാലൻസ് നിലനിർത്താനാകും.

കമ്പ്യൂട്ടർ സയൻസിലെ ക്ലാസിക് പ്രശ്നങ്ങളിലൊന്നാണ് ഹാഷിംഗ്: അതിന്റെ വിവിധ അൽഗോരിതങ്ങൾ വിശദമായി പഠിക്കുകയും വ്യാപകമായി ഉപയോഗിക്കുകയും ചെയ്യുന്നു. വളരെ അയഞ്ഞ അനുമാനങ്ങളിൽ, പട്ടികയുടെ വലുപ്പം പരിഗണിക്കാതെ തന്നെ, സ്ഥിരമായ നിർവ്വഹണ സമയമുള്ള ചിഹ്ന പട്ടികകളിൽ പ്രവർത്തനങ്ങൾ കണ്ടെത്തുന്നതിനും തിരുകുന്നതിനും പിന്തുണയ്‌ക്കുമെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു.

ഈ പ്രതീക്ഷിക്കുന്ന മൂല്യം ഏത് ചിഹ്ന പട്ടിക നടപ്പാക്കലിനും ഒപ്റ്റിമൽ സൈദ്ധാന്തിക പ്രകടനമാണ്, എന്നാൽ രണ്ട് പ്രധാന കാരണങ്ങളാൽ ഹാഷിംഗ് ഇപ്പോഴും ഒരു പരിഭ്രാന്തിയല്ല. ഒന്നാമതായി, ലീഡ് ടൈംകീ ദൈർഘ്യത്തെ ആശ്രയിച്ചിരിക്കുന്നു, യഥാർത്ഥ ആപ്ലിക്കേഷനുകളിൽ നീളമുള്ള കീകൾ ഉപയോഗിക്കുന്നത് പ്രാധാന്യമർഹിക്കുന്നതാണ്. രണ്ടാമതായി, തിരഞ്ഞെടുത്തതോ അടുക്കുന്നതോ പോലുള്ള മറ്റ് ചിഹ്ന പട്ടിക പ്രവർത്തനങ്ങളുടെ കാര്യക്ഷമമായ നടപ്പാക്കലുകൾ ഹാഷിംഗ് നൽകുന്നില്ല. ഈ അധ്യായത്തിൽ ഇവയും മറ്റ് പ്രശ്നങ്ങളും ഞങ്ങൾ വിശദമായി പരിശോധിക്കും.

ഹാഷ് പ്രവർത്തനങ്ങൾ

ഒന്നാമതായി, കീകളെ പട്ടിക വിലാസങ്ങളാക്കി മാറ്റുന്ന ഒരു ഹാഷ് ഫംഗ്ഷൻ കണക്കാക്കുന്നതിനുള്ള പ്രശ്നം പരിഹരിക്കേണ്ടത് ആവശ്യമാണ്. സാധാരണയായി, ഈ ഗണിത കണക്കുകൂട്ടൽ നടപ്പിലാക്കുന്നത് ബുദ്ധിമുട്ടുള്ള കാര്യമല്ല, പക്ഷേ വിവിധ സൂക്ഷ്മമായ അപകടങ്ങളിൽ അകപ്പെടാതിരിക്കാൻ നിങ്ങൾ ഇപ്പോഴും ശ്രദ്ധിക്കേണ്ടതുണ്ട്. നിങ്ങൾക്ക് M ഘടകങ്ങൾ ഉൾക്കൊള്ളാൻ കഴിയുന്ന ഒരു പട്ടിക ഉണ്ടെങ്കിൽ, ശ്രേണിയിലെ കീകളെ പൂർണ്ണസംഖ്യകളാക്കി മാറ്റുന്ന ഒരു ഫംഗ്ഷൻ നിങ്ങൾക്ക് ആവശ്യമാണ്. ഒരു ഐഡിയൽ ഹാഷ് ഫംഗ്‌ഷൻ കണക്കുകൂട്ടാൻ എളുപ്പമായിരിക്കണം കൂടാതെ ഒരു റാൻഡം ഫംഗ്‌ഷനോട് സാമ്യമുള്ളതായിരിക്കണം: ഏതൊരു ആർഗ്യുമെന്റിനും, ഫലങ്ങൾ ഏതെങ്കിലും അർത്ഥത്തിൽ തുല്യമായിരിക്കണം.

ഹാഷ് ഫംഗ്ഷൻ കീ തരത്തെ ആശ്രയിച്ചിരിക്കുന്നു. കൃത്യമായി പറഞ്ഞാൽ, സാധ്യമായ ഓരോ തരം കീകൾക്കും ഒരു പ്രത്യേക ഹാഷ് ഫംഗ്ഷൻ ആവശ്യമാണ്. കാര്യക്ഷമത വർദ്ധിപ്പിക്കുന്നതിന്, വ്യക്തമായ തരം പരിവർത്തനം ഒഴിവാക്കുന്നത് സാധാരണയായി അഭികാമ്യമാണ്, പകരം ഒരു മെഷീൻ പദത്തിലെ കീകളുടെ ബൈനറി പ്രാതിനിധ്യം ഗണിത കണക്കുകൂട്ടലുകളിൽ ഉപയോഗിക്കാവുന്ന ഒരു പൂർണ്ണസംഖ്യയായി പരിഗണിക്കുക എന്ന ആശയത്തിലേക്ക് തിരിയുക. ഹാഷിംഗ് ഉയർന്ന തലത്തിലുള്ള ഭാഷകൾക്ക് മുമ്പുള്ളതാണ് - ആദ്യകാല കമ്പ്യൂട്ടറുകളിൽ ഒരു മൂല്യത്തെ ഒരു സ്ട്രിംഗ് കീ അല്ലെങ്കിൽ ഒരു പൂർണ്ണസംഖ്യയായി കണക്കാക്കുന്നത് സാധാരണമായിരുന്നു. ചില ഉയർന്ന തലത്തിലുള്ള ഭാഷകൾ ഒരു പ്രത്യേക കമ്പ്യൂട്ടറിന്റെ കീകളുടെ പ്രാതിനിധ്യത്തെ ആശ്രയിക്കുന്ന പ്രോഗ്രാമുകൾ എഴുതുന്നത് ബുദ്ധിമുട്ടാക്കുന്നു, കാരണം അത്തരം പ്രോഗ്രാമുകൾ അന്തർലീനമായി മെഷീനുകളെ ആശ്രയിച്ചിരിക്കുന്നു, അതിനാൽ മറ്റൊരു കമ്പ്യൂട്ടറിലേക്ക് പോർട്ട് ചെയ്യുന്നത് ബുദ്ധിമുട്ടാണ്. സാധാരണഗതിയിൽ, ഹാഷ് ഫംഗ്‌ഷനുകൾ കീകളെ പൂർണ്ണസംഖ്യകളാക്കി മാറ്റുന്ന പ്രക്രിയയെ ആശ്രയിച്ചിരിക്കുന്നു, അതിനാൽ ഹാഷിംഗ് നടപ്പിലാക്കലുകൾ മെഷീൻ സ്വതന്ത്രവും കാര്യക്ഷമവുമാകുന്നത് ബുദ്ധിമുട്ടാണ്. പൊതുവേ, ലളിതമായ പൂർണ്ണസംഖ്യ അല്ലെങ്കിൽ ഫ്ലോട്ടിംഗ് പോയിന്റ് കീകൾ ഒരു മെഷീൻ ഓപ്പറേഷൻ ഉപയോഗിച്ച് പരിവർത്തനം ചെയ്യാൻ കഴിയും, എന്നാൽ സ്ട്രിംഗ് കീകൾക്കും മറ്റ് തരത്തിലുള്ള കോമ്പോസിറ്റ് കീകൾക്കും കൂടുതൽ ഓവർഹെഡും കാര്യക്ഷമതയിൽ കൂടുതൽ ശ്രദ്ധയും ആവശ്യമാണ്.

ഒരു നിശ്ചിത ശ്രേണിയിൽ നിന്നുള്ള കീകൾ ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പറുകളായിരിക്കുമ്പോൾ ഒരുപക്ഷേ ഏറ്റവും ലളിതമായ സാഹചര്യമാണ്. ഉദാഹരണത്തിന്, കീകൾ 0-ൽ കൂടുതലും 1-ൽ താഴെയുമുള്ള സംഖ്യകളാണെങ്കിൽ, നിങ്ങൾക്ക് അവയെ M കൊണ്ട് ഗുണിച്ച് ഫലത്തെ ഏറ്റവും താഴ്ന്ന പൂർണ്ണസംഖ്യയിലേക്ക് റൌണ്ട് ചെയ്യുകയും 0-നും M - 1-നും ഇടയിലുള്ള ശ്രേണിയിൽ ഒരു വിലാസം നേടുകയും ചെയ്യാം; അത്തരമൊരു ഉദാഹരണം ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്നു. 14.1 കീകൾ s-നേക്കാൾ വലുതും t-യിൽ കുറവുമാണെങ്കിൽ, അവയെ s കുറയ്ക്കുകയും t-s കൊണ്ട് ഹരിക്കുകയും അവയെ 0-നും 1-നും ഇടയിലുള്ള മൂല്യങ്ങളുടെ പരിധിയിലേക്ക് കൊണ്ടുവരികയും തുടർന്ന് M കൊണ്ട് ഗുണിച്ച് പട്ടികയിലെ വിലാസം നേടുകയും ചെയ്യാം. .


അരി. 14.1

0 നും 1 നും ഇടയിലുള്ള ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പറുകളെ 97 വലുപ്പമുള്ള പട്ടികയുടെ സൂചികകളാക്കി മാറ്റാൻ, ആ സംഖ്യകളെ 97 കൊണ്ട് ഗുണിക്കുക. ഈ ഉദാഹരണത്തിൽ, മൂന്ന് കൂട്ടിയിടികൾ സംഭവിച്ചു: 17, 53, 76 എന്നിവയ്ക്ക് തുല്യമായ സൂചികകൾക്ക്. ഹാഷ് മൂല്യങ്ങൾ കീയുടെ ഏറ്റവും ഉയർന്ന ബിറ്റുകൾ നിർണ്ണയിക്കുന്നു, ലോ ഓർഡർ ബിറ്റുകൾ ഒരു പങ്കും വഹിക്കുന്നില്ല. ഒരു ഹാഷ് ഫംഗ്‌ഷൻ രൂപകൽപ്പന ചെയ്യുന്നതിന്റെ ലക്ഷ്യങ്ങളിലൊന്ന് ഈ അസന്തുലിതാവസ്ഥ ഇല്ലാതാക്കുക എന്നതാണ്, അങ്ങനെ ഓരോ ബിറ്റും കണക്കുകൂട്ടൽ സമയത്ത് കണക്കാക്കും.

കീകൾ w-bit integers ആണെങ്കിൽ, അവയെ floats ആക്കി 2 w കൊണ്ട് ഹരിച്ച് 0 നും 1 നും ഇടയിലുള്ള ശ്രേണിയിൽ ഫ്ലോട്ടുകൾ ഉണ്ടാക്കാം, തുടർന്ന് മുൻ ഖണ്ഡികയിലെ പോലെ M കൊണ്ട് ഗുണിക്കുക. ഫ്ലോട്ടിംഗ് പോയിന്റ് പ്രവർത്തനങ്ങൾക്ക് വളരെയധികം സമയമെടുക്കുകയും സംഖ്യകൾ ഓവർഫ്ലോ ഉണ്ടാക്കാൻ പര്യാപ്തമല്ലെങ്കിൽ, പൂർണ്ണസംഖ്യയുടെ ഗണിതശാസ്ത്രം ഉപയോഗിച്ച് അതേ ഫലം ലഭിക്കും: കീയെ M കൊണ്ട് ഗുണിക്കുക, തുടർന്ന് വലത് ഷിഫ്റ്റ് w ബിറ്റുകൾ 2 w കൊണ്ട് ഹരിക്കുക (അല്ലെങ്കിൽ, എങ്കിൽ ഗുണനം ഒരു ഓവർഫ്ലോയിൽ കലാശിക്കുന്നു, ഒരു ഷിഫ്റ്റ് ചെയ്യുക, തുടർന്ന് ഒരു ഗുണനം). കീകൾ ശ്രേണിയിലുടനീളം തുല്യമായി വിതരണം ചെയ്യപ്പെടുന്നില്ലെങ്കിൽ അത്തരം രീതികൾ ഹാഷിംഗിന് ഉപയോഗശൂന്യമാണ്, കാരണം ഹാഷ് മൂല്യം കീയുടെ മുൻനിര അക്കങ്ങൾ കൊണ്ട് മാത്രമേ നിർണ്ണയിക്കൂ.

w-ബിറ്റ് പൂർണ്ണസംഖ്യകൾക്കായുള്ള ലളിതവും കൂടുതൽ കാര്യക്ഷമവുമായ രീതി ഒരുപക്ഷേ ഏറ്റവും സാധാരണയായി ഉപയോഗിക്കുന്ന ഹാഷിംഗ് രീതികളിലൊന്നാണ് - പട്ടികയുടെ വലുപ്പം M ആയി ഒരു പ്രൈം നമ്പർ തിരഞ്ഞെടുക്കുകയും k നെ M കൊണ്ട് ഹരിക്കുമ്പോൾ ബാക്കിയുള്ളത് കണക്കാക്കുകയും ചെയ്യുക, അതായത്. h(k) = k മോഡ് M ഏത് പൂർണ്ണസംഖ്യ കീയ്ക്കും k. ഈ പ്രവർത്തനത്തെ മോഡുലാർ ഹാഷ് ഫംഗ്ഷൻ എന്ന് വിളിക്കുന്നു. ഇത് കണക്കാക്കുന്നത് വളരെ എളുപ്പമാണ് (C++ ൽ k% M) കൂടാതെ M-ൽ താഴെയുള്ള മൂല്യങ്ങൾക്കിടയിൽ കീ മൂല്യങ്ങളുടെ തുല്യമായ വിതരണം നേടുന്നതിൽ ഫലപ്രദമാണ്. ഒരു ചെറിയ ഉദാഹരണം ചിത്രം 1-ൽ കാണിച്ചിരിക്കുന്നു. 14.2


അരി. 14.2

വലതുവശത്തുള്ള മൂന്ന് നിരകൾ താഴെ പറയുന്ന ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് ഇടതുവശത്ത് കാണിച്ചിരിക്കുന്ന 16-ബിറ്റ് കീകൾ ഹാഷ് ചെയ്തതിന്റെ ഫലം കാണിക്കുന്നു:

v% 97 (ഇടത്)

v% 100 (മധ്യത്തിൽ) ഒപ്പം

(int) (a * v) % 100 (വലത്),

ഇവിടെ a = .618033. ഈ ഫംഗ്‌ഷനുകളുടെ പട്ടിക വലുപ്പങ്ങൾ യഥാക്രമം 97, 100, 100 എന്നിവയാണ്. മൂല്യങ്ങൾ ക്രമരഹിതമായി ദൃശ്യമാകുന്നു (കീകൾ ക്രമരഹിതമായതിനാൽ). രണ്ടാമത്തെ ഫംഗ്‌ഷൻ (v % 100) കീകളുടെ ഏറ്റവും വലതുവശത്തുള്ള രണ്ട് അക്കങ്ങൾ മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ, അതിനാൽ ക്രമരഹിതമായ കീകളുടെ പ്രകടനം മോശമായേക്കാം.

ഫ്ലോട്ടിംഗ് പോയിന്റ് കീകൾക്കും മോഡുലാർ ഹാഷിംഗ് ബാധകമാണ്. കീകൾ ഒരു ചെറിയ ശ്രേണിയിലാണെങ്കിൽ, നിങ്ങൾക്ക് അവയെ 0-നും 1.2w-നും ഇടയിലുള്ള സംഖ്യകളിലേക്ക് സ്കെയിൽ ചെയ്ത് w-bit integer മൂല്യങ്ങൾ നിർമ്മിക്കാൻ കഴിയും, തുടർന്ന് ഒരു മോഡുലാർ ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിക്കുക. മോഡുലാർ ഹാഷ് ഫംഗ്‌ഷന്റെ ഓപ്പറണ്ടായി കീയുടെ ബൈനറി പ്രാതിനിധ്യം (ലഭ്യമെങ്കിൽ) ഉപയോഗിക്കുക എന്നതാണ് മറ്റൊരു ഉപാധി.

ഒരു മെഷീൻ വേഡ് പ്രതിനിധീകരിക്കുന്ന പൂർണ്ണസംഖ്യകളായാലും, ഒരു മെഷീൻ പദത്തിൽ പാക്ക് ചെയ്തിരിക്കുന്ന പ്രതീകങ്ങളുടെ ക്രമമായാലും അല്ലെങ്കിൽ സാധ്യമായ മറ്റേതെങ്കിലും വേരിയന്റിനാൽ പ്രതിനിധീകരിക്കപ്പെട്ടാലും, കീകൾ നിർമ്മിക്കുന്ന ബിറ്റുകളിലേക്ക് ആക്സസ് ഉള്ള എല്ലാ സാഹചര്യങ്ങളിലും മോഡുലാർ ഹാഷിംഗ് ഉപയോഗിക്കുന്നു. എല്ലാ ബിറ്റുകളും എൻകോഡിംഗിനായി ഉപയോഗിക്കാത്തതിനാൽ, ഒരു മെഷീൻ വേഡിലേക്ക് പായ്ക്ക് ചെയ്ത ക്രമരഹിതമായ പ്രതീകങ്ങളുടെ ഒരു ശ്രേണി, ക്രമരഹിതമായ പൂർണ്ണസംഖ്യ കീകൾക്ക് തുല്യമല്ല. എന്നാൽ ഈ രണ്ട് തരങ്ങളും (ഒപ്പം ഒരു മെഷീൻ വാക്കിലേക്ക് യോജിക്കുന്നതിനായി എൻകോഡ് ചെയ്‌ത മറ്റേതെങ്കിലും കീ തരങ്ങളും) ഒരു ചെറിയ പട്ടികയിൽ ക്രമരഹിതമായ സൂചികകളായി ദൃശ്യമാക്കാൻ കഴിയും.

മോഡുലാർ ഹാഷിംഗിനായി ഒരു പ്രൈം ഹാഷ് ടേബിൾ സൈസ് എം തിരഞ്ഞെടുക്കുന്നതിനുള്ള പ്രധാന കാരണം ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്നു. 14.3 7-ബിറ്റ് പ്രതീക ഡാറ്റയുടെ ഈ ഉദാഹരണത്തിൽ, കീയെ അടിസ്ഥാന 128 നമ്പറായി കണക്കാക്കുന്നു - കീയിലെ ഓരോ പ്രതീകത്തിനും ഒരു അക്കം. ഈ വാക്ക് ഇപ്പോൾ 1816567 എന്ന സംഖ്യയുമായി യോജിക്കുന്നു, അത് ഇങ്ങനെയും എഴുതാം

കാരണം ASCII കോഡിലെ n, o, w എന്നീ പ്രതീകങ്ങൾ 1568 = 110, 1578 = 111, 1678 = 119 എന്നീ സംഖ്യകളുമായി പൊരുത്തപ്പെടുന്നു. ഈ കീ തരത്തിന് M = 64 എന്ന ടേബിൾ വലുപ്പം തിരഞ്ഞെടുക്കുന്നത് നിർഭാഗ്യകരമാണ്, കാരണം 64 (അല്ലെങ്കിൽ 128) ന്റെ ഗുണിതങ്ങൾ x-ലേക്ക് ചേർക്കുന്നത് x mod 64-ന്റെ മൂല്യത്തെ മാറ്റില്ല - ഏത് കീയ്‌ക്കും, അവസാന 6 അക്കങ്ങളുടെ മൂല്യമാണ് ഹാഷ് മൂല്യം. ആ താക്കോലിന്റെ. തീർച്ചയായും, ഒരു നല്ല ഹാഷ് ഫംഗ്ഷൻ കീയുടെ എല്ലാ ബിറ്റുകളും കണക്കിലെടുക്കണം, പ്രത്യേകിച്ച് പ്രതീക കീകൾക്കായി. M-ൽ 2-ന്റെ പവർ ഉള്ള ഒരു ഘടകം അടങ്ങിയിരിക്കുമ്പോൾ സമാനമായ സാഹചര്യങ്ങൾ ഉണ്ടാകാം. ഇത് ഒഴിവാക്കാനുള്ള ഏറ്റവും ലളിതമായ മാർഗ്ഗം M-നായി ഒരു പ്രൈം നമ്പർ തിരഞ്ഞെടുക്കുക എന്നതാണ്.


അരി. 14.3

ഈ പട്ടികയുടെ ഓരോ വരിയിലും അടങ്ങിയിരിക്കുന്നു: 3-അക്ഷര വാക്ക്, ഒക്ടൽ, ഡെസിമൽ ഫോമുകളിൽ 21-ബിറ്റ് സംഖ്യയായി ആ വാക്കിന്റെ ഒരു ASCII പ്രാതിനിധ്യം, 64, 31 എന്നീ ടേബിൾ സൈസുകൾക്കുള്ള സ്റ്റാൻഡേർഡ് മോഡുലാർ ഹാഷ് ഫംഗ്ഷനുകൾ (വലതുവശത്തുള്ള രണ്ട് നിരകൾ). 64 എന്ന ടേബിൾ സൈസ് അനഭിലഷണീയമായ ഫലങ്ങൾ നൽകുന്നു, കാരണം കീയുടെ ഏറ്റവും വലത് ബിറ്റുകൾ മാത്രമേ ഹാഷ് മൂല്യം ലഭിക്കാൻ ഉപയോഗിക്കുന്നുള്ളൂ, സാധാരണ ഭാഷാ വാക്കുകളിലെ അക്ഷരങ്ങൾ തുല്യമായി വിതരണം ചെയ്യപ്പെടുന്നില്ല. ഉദാഹരണത്തിന്, y എന്ന അക്ഷരത്തിൽ അവസാനിക്കുന്ന എല്ലാ പദങ്ങൾക്കും ഹാഷ് മൂല്യം 57 ആണ്. നേരെമറിച്ച്, ലളിതമായ മൂല്യം 31 പകുതിയിലധികം വലിപ്പമുള്ള ഒരു പട്ടികയിൽ കുറച്ച് കൂട്ടിയിടികൾക്ക് കാരണമാകുന്നു.

മോഡുലാർ ഹാഷിംഗ് നടപ്പിലാക്കാൻ വളരെ ലളിതമാണ്, ടേബിൾ സൈസ് ഒരു പ്രൈം നമ്പറായിരിക്കണം എന്നതൊഴിച്ചാൽ. ചില ആപ്ലിക്കേഷനുകൾക്കായി, അറിയപ്പെടുന്ന ഒരു ചെറിയ പ്രൈം നമ്പർ ഉപയോഗിച്ച് നിങ്ങൾക്ക് സംതൃപ്തരാകാം, അല്ലെങ്കിൽ ആവശ്യമുള്ള ടേബിൾ വലുപ്പത്തിന് അടുത്തുള്ള ഒന്നിനായി നിങ്ങൾക്ക് അറിയപ്പെടുന്ന പ്രൈം നമ്പറുകളുടെ ലിസ്റ്റ് തിരയാം. ഉദാഹരണത്തിന്, 2 t - 1 ന് തുല്യമായ സംഖ്യകൾ പ്രൈം എപ്പോൾ ആണ് t = 2, 3, 5, 7, 13, 17, 19 ഒപ്പം 31(ഒപ്പം t യുടെ മറ്റ് മൂല്യങ്ങളൊന്നുമില്ല< 31 ): это известные простые числа Мерсенна. Чтобы динамически распределить таблицу нужного размера, нужно вычислить простое число, близкое к этому значению. Такое вычисление нетривиально (хотя для этого и существует остроумный алгоритм, который будет рассмотрен в части 5), поэтому на практике обычно используют таблицу заранее вычисленных значений (см. рис. 14.4). Использование модульного хеширования - не единственная причина, по которой размер таблицы стоит сделать простым числом; еще одна причина рассматривается в разделе 14.4.


അരി. 14.4

2 n-ൽ താഴെയുള്ള ഏറ്റവും വലിയ അഭാജ്യ സംഖ്യകളുടെ ഈ പട്ടികയാണ് , ടേബിൾ സൈസ് ഒരു പ്രൈം നമ്പറാകാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്ന സമയത്ത് ഒരു ഹാഷ് ടേബിൾ ഡൈനാമിക് ആയി അലോക്കേറ്റ് ചെയ്യാൻ ഉപയോഗിക്കാം. പരിധിയിൽ നൽകിയിരിക്കുന്ന ഏതൊരു പോസിറ്റീവ് മൂല്യത്തിനും, 2 ന്റെ ഫാക്ടറിൽ താഴെ വ്യത്യാസമുള്ള പ്രൈം നമ്പർ നിർണ്ണയിക്കാൻ ഈ പട്ടിക ഉപയോഗിക്കാം.

പൂർണ്ണസംഖ്യ കീകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള മറ്റൊരു ഉപാധിയാണ് ഗുണിതവും മോഡുലാർ രീതികളും സംയോജിപ്പിക്കുന്നത്: നിങ്ങൾ കീയെ 0 നും 1 നും ഇടയിലുള്ള സ്ഥിരാങ്കം കൊണ്ട് ഗുണിക്കുക, തുടർന്ന് M മോഡുലോ ഹരിക്കുക. മറ്റൊരു രീതിയിൽ പറഞ്ഞാൽ, നിങ്ങൾ ഫംഗ്ഷൻ ഉപയോഗിക്കേണ്ടതുണ്ട് . , M ന്റെ മൂല്യങ്ങളും കീയുടെ ഫലപ്രദമായ റാഡിക്സും തമ്മിൽ ഒരു ബന്ധമുണ്ട്, അത് സൈദ്ധാന്തികമായി അസാധാരണ സ്വഭാവത്തിലേക്ക് നയിച്ചേക്കാം, എന്നാൽ a യുടെ ഏകപക്ഷീയമായ മൂല്യം ഉപയോഗിക്കുകയാണെങ്കിൽ, ഒരു യഥാർത്ഥ ആപ്ലിക്കേഷനിൽ എന്തെങ്കിലും പ്രശ്നം ഉണ്ടാകാൻ സാധ്യതയില്ല. പലപ്പോഴും മൂല്യം φ = 0.618033... (സ്വർണ്ണ അനുപാതം) a ആയി തിരഞ്ഞെടുക്കപ്പെടുന്നു.

ഈ തീമിലെ മറ്റ് പല വ്യതിയാനങ്ങളും പര്യവേക്ഷണം ചെയ്തിട്ടുണ്ട്, പ്രത്യേകിച്ച് ഹാഷ് ഫംഗ്‌ഷനുകൾ, ഷിഫ്റ്റ്, മാസ്‌ക് അലോക്കേഷൻ എന്നിവ പോലുള്ള കാര്യക്ഷമമായ മെഷീൻ നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് ഇത് നടപ്പിലാക്കാൻ കഴിയും (റഫറൻസ് വിഭാഗം കാണുക).

ചിഹ്ന പട്ടികകൾ ഉപയോഗിക്കുന്ന പല ആപ്ലിക്കേഷനുകളിലും, കീകൾ അക്കങ്ങളല്ല, അവ ചെറുതായിരിക്കണമെന്നില്ല; മിക്കപ്പോഴും ഇവ ആൽഫാന്യൂമെറിക് സ്ട്രിംഗുകളാണ്, അത് വളരെ ദൈർഘ്യമേറിയതായിരിക്കും. അപ്പോൾ നിങ്ങൾ എങ്ങനെയാണ് averylongkey പോലുള്ള ഒരു വാക്കിനായി ഒരു ഹാഷ് ഫംഗ്ഷൻ കണക്കാക്കുന്നത്?

7-ബിറ്റ് ASCII കോഡിൽ, ഈ വാക്ക് 84-ബിറ്റ് നമ്പറുമായി യോജിക്കുന്നു \begin(align*) 97 \cdot 128^(11) &+ 118 \cdot 128^(10) + 101 \cdot 128^(9) + 114 \ cdot 128^(8) + 121 \cdot 128^(7)\\ &+ 108 \cdot 128^(6) + 111 \cdot 128^(5) + 110 \cdot 128^(4) + 103 \ cdot 128 ^(3)\\ &+ 107 \cdot 128^(2) + 101 \cdot 128^(1) + 121 \cdot 128^(0), \end(align*),

മിക്ക കമ്പ്യൂട്ടറുകളിലും സാധാരണ ഗണിത പ്രവർത്തനങ്ങൾ കൈകാര്യം ചെയ്യാൻ കഴിയാത്തത്ര വലുതാണ്. പലപ്പോഴും ദൈർഘ്യമേറിയ കീകൾ പ്രോസസ്സ് ചെയ്യേണ്ടത് ആവശ്യമാണ്.

ദൈർഘ്യമേറിയ കീകൾക്കായി ഒരു മോഡുലാർ ഹാഷ് ഫംഗ്ഷൻ കണക്കാക്കാൻ, അവ ശകലം ഉപയോഗിച്ച് പരിവർത്തനം ചെയ്യുന്നു. നിങ്ങൾക്ക് മോഡുലസ് ഫംഗ്‌ഷന്റെ ഗണിത ഗുണങ്ങൾ പ്രയോജനപ്പെടുത്തുകയും ഹോർണറിന്റെ അൽഗോരിതം ഉപയോഗിക്കുകയും ചെയ്യാം (വിഭാഗം 4.9 "അമൂർത്ത ഡാറ്റ തരങ്ങൾ" കാണുക). ഈ രീതി കീകളുമായി ബന്ധപ്പെട്ട സംഖ്യകൾ എഴുതുന്നതിനുള്ള മറ്റൊരു രീതിയെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. പരിഗണനയിലിരിക്കുന്ന ഉദാഹരണത്തിനായി, ഞങ്ങൾ ഇനിപ്പറയുന്ന പദപ്രയോഗം എഴുതുന്നു: \begin(align*) (((((((97 \cdot 128^(11)) &+ 118))) \cdot 128^(10)) + 101)) \ cdot 128^( 9) + 114) \cdot 128^(8) + 121) \cdot 128^(7)\\ &+ 108) \cdot 128^(6) + 111) \cdot 128^(5) + 110) \cdot 128^(4) + 103) \cdot 128^(3)\\ &+ 107) \cdot 128^(2) + 101) \cdot 128^(1) + 121. \end(align* )

അതായത്, ഒരു സ്‌ട്രിംഗിന്റെ പ്രതീക എൻകോഡിംഗുമായി ബന്ധപ്പെട്ട ദശാംശ സംഖ്യ അത് ഇടത്തുനിന്ന് വലത്തോട്ട് സ്‌കാൻ ചെയ്‌ത് കണക്കാക്കാം, സഞ്ചിത മൂല്യത്തെ 128 കൊണ്ട് ഗുണിച്ച് അടുത്ത പ്രതീകത്തിന്റെ എൻകോഡിംഗ് മൂല്യം ചേർക്കുക. ഒരു നീണ്ട സ്ട്രിംഗിന്റെ കാര്യത്തിൽ, ഈ കണക്കുകൂട്ടൽ രീതി ഒടുവിൽ കമ്പ്യൂട്ടറിൽ സാധാരണയായി പ്രതിനിധീകരിക്കാവുന്നതിനേക്കാൾ വലിയ സംഖ്യയിലേക്ക് നയിക്കും. എന്നിരുന്നാലും, ഈ സംഖ്യ ആവശ്യമില്ല, കാരണം അതിന്റെ ഡിവിഷൻ M കൊണ്ട് (ചെറിയ) ബാക്കിയുള്ളത് മാത്രമേ ആവശ്യമുള്ളൂ, ഒരു വലിയ സഞ്ചിത മൂല്യം പോലും സംഭരിക്കാതെ തന്നെ ഫലം ലഭിക്കും, കാരണം കണക്കുകൂട്ടലിന്റെ ഏത് ഘട്ടത്തിലും, നമുക്ക് M ന്റെ ഗുണിതം നിരസിക്കാൻ കഴിയും - ഓരോ തവണയും നമ്മൾ ഗുണനവും സങ്കലനവും നടത്തുമ്പോൾ, നമുക്ക് ഡിവിഷൻ മൊഡ്യൂളോ M ന്റെ ബാക്കി സംഭരിച്ചാൽ മതിയാകും. നമുക്ക് കണക്കുകൂട്ടാൻ അവസരം ലഭിച്ചാൽ ഫലം സമാനമായിരിക്കും. ഒരു നീണ്ട സംഖ്യ തുടർന്ന് വിഭജനം നടത്തുക (കാണുക. വ്യായാമം 14.10). ഈ നിരീക്ഷണം നീളമുള്ള സ്ട്രിംഗുകൾക്കുള്ള മോഡുലാർ ഹാഷ് ഫംഗ്ഷനുകൾ കംപ്യൂട്ടുചെയ്യുന്നതിനുള്ള ഒരു നേരായ ഗണിത രീതിയിലേക്ക് നയിക്കുന്നു - പ്രോഗ്രാം 14.1 കാണുക. ഈ പ്രോഗ്രാം ഒരു അന്തിമ ട്രിക്ക് ഉപയോഗിക്കുന്നു: അടിസ്ഥാനം 128 ഉപയോഗിക്കുന്നതിനുപകരം, ഇത് പ്രൈം നമ്പർ 127 ഉപയോഗിക്കുന്നു. ഈ മാറ്റത്തിന്റെ കാരണം അടുത്ത ഖണ്ഡികയിൽ ചർച്ചചെയ്യും.

ഹോർണറുടെ രീതി (കീയിലെ ഓരോ പ്രതീകത്തിനും ഒന്നോ രണ്ടോ ഗണിത പ്രവർത്തനങ്ങൾ) ഉപയോഗിച്ച് മോഡുലാർ ഹാഷിംഗിന്റെ അതേ വിലയിൽ ഹാഷ് ഫംഗ്ഷനുകൾ കണക്കാക്കാൻ നിരവധി മാർഗങ്ങളുണ്ട്. റാൻഡം കീകൾക്കായി, ഈ രീതികൾ പ്രായോഗികമായി സമാനമാണ്, എന്നാൽ യഥാർത്ഥ കീകൾ അപൂർവ്വമായി ക്രമരഹിതമാണ്. കുറഞ്ഞ ചെലവിൽ യഥാർത്ഥ കീകൾ ക്രമരഹിതമാക്കാനുള്ള കഴിവ് ക്രമരഹിതമായ ഹാഷിംഗ് അൽഗോരിതങ്ങൾ പരിഗണിക്കാൻ ഞങ്ങളെ പ്രേരിപ്പിക്കുന്നു, കാരണം കീ വിതരണം പരിഗണിക്കാതെ തന്നെ ഒരു ടേബിളിൽ ക്രമരഹിതമായ സൂചികകൾ സൃഷ്ടിക്കുന്ന ഹാഷ് ഫംഗ്ഷനുകൾ ഞങ്ങൾക്ക് ആവശ്യമാണ്. റാൻഡമൈസേഷൻ സംഘടിപ്പിക്കുന്നത് ബുദ്ധിമുട്ടുള്ള കാര്യമല്ല, കാരണം മോഡുലാർ ഹാഷിംഗിന്റെ നിർവചനം അക്ഷരാർത്ഥത്തിൽ പാലിക്കേണ്ട ആവശ്യമില്ല - M-നേക്കാൾ കുറവുള്ള ഒരു പൂർണ്ണസംഖ്യയുടെ കണക്കുകൂട്ടലിൽ, കീയുടെ എല്ലാ ബിറ്റുകളും ഉപയോഗിക്കേണ്ടത് ആവശ്യമാണ്.

പ്രോഗ്രാം 14.1. സ്ട്രിംഗ് കീകൾക്കുള്ള ഹാഷ് ഫംഗ്ഷൻ

M = 96, a = 128 (മുകളിൽ),

M = 97 ഉം a = 128 (മധ്യത്തിൽ) ഒപ്പം

M=96, a=127 (ചുവടെ)

പട്ടികയുടെ വലിപ്പവും ഘടകവും 32 ന്റെ ഗുണിതങ്ങളായതിനാൽ അക്ഷരങ്ങളുടെ അസമമായ ഉപയോഗത്തിന്റെയും അസമത്വം നിലനിൽക്കുന്നതിന്റെയും ഫലമാണ് ആദ്യ സന്ദർഭത്തിലെ അസമമായ വിതരണം. മറ്റ് രണ്ട് ഉദാഹരണങ്ങളും ക്രമരഹിതമായി കാണപ്പെടുന്നു, കാരണം പട്ടിക വലിപ്പവും ഘടകവും കോപ്രൈം നമ്പറുകളാണ്.

പ്രോഗ്രാം 14.1 ഇതിനുള്ള ഒരു വഴി കാണിക്കുന്നു: 2 ന്റെ ശക്തിക്ക് പകരം ഒരു അടിസ്ഥാന പ്രൈം ഉപയോഗിക്കുന്നു, സ്ട്രിംഗിന്റെ ASCII പ്രാതിനിധ്യത്തിന് അനുയോജ്യമായ ഒരു പൂർണ്ണസംഖ്യ. ചിത്രത്തിൽ. 14.5 ചിത്രം. ഈ മാറ്റം സാധാരണ സ്ട്രിംഗ് കീകൾക്കുള്ള വിതരണത്തെ എങ്ങനെ മെച്ചപ്പെടുത്തുന്നുവെന്ന് ചിത്രം 14.5 കാണിക്കുന്നു. സിദ്ധാന്തത്തിൽ, പ്രോഗ്രാം 14.1 നിർമ്മിച്ച ഹാഷ് മൂല്യങ്ങൾ 127 ന്റെ ഗുണിതങ്ങളുള്ള പട്ടിക വലുപ്പങ്ങൾക്ക് മോശം ഫലങ്ങൾ ഉണ്ടാക്കും (പ്രായോഗികമായി ഇത് മിക്കവാറും അദൃശ്യമായിരിക്കും); ക്രമരഹിതമായ ഒരു അൽഗോരിതം സൃഷ്ടിക്കുന്നതിന്, ഒരാൾക്ക് ക്രമരഹിതമായി ഒരു ഗുണിത മൂല്യം തിരഞ്ഞെടുക്കാം. കണക്കുകൂട്ടലിലെ ഗുണകങ്ങൾക്കായി ക്രമരഹിതമായ മൂല്യങ്ങളും കീയുടെ ഓരോ അക്കത്തിനും വ്യത്യസ്ത റാൻഡം മൂല്യവും ഉപയോഗിക്കുന്നതാണ് കൂടുതൽ കാര്യക്ഷമമായ സമീപനം. ഈ സമീപനം സാർവത്രിക ഹാഷിംഗ് എന്ന ക്രമരഹിതമായ അൽഗോരിതം നിർമ്മിക്കുന്നു.

സൈദ്ധാന്തികമായി, ഒരു ഐഡിയൽ യൂണിവേഴ്സൽ ഹാഷ് ഫംഗ്‌ഷൻ എന്നത് M വലുപ്പമുള്ള ഒരു പട്ടികയിലെ രണ്ട് വ്യത്യസ്ത കീകൾ തമ്മിലുള്ള കൂട്ടിയിടിയുടെ സംഭാവ്യത കൃത്യമായി 1/M ആണ്. ഒരു നിശ്ചിത അനിയന്ത്രിതമായ മൂല്യത്തിനുപകരം, പ്രോഗ്രാം 14.1 ലെ കോഫിഫിഷ്യന്റ് a ആയി ക്രമരഹിതമായ വ്യത്യസ്ത മൂല്യങ്ങളുടെ ഒരു ശ്രേണി ഉപയോഗിക്കുന്നത് മോഡുലാർ ഹാഷിംഗിനെ ഒരു സാർവത്രിക ഹാഷ് ഫംഗ്ഷനാക്കി മാറ്റുന്നുവെന്ന് തെളിയിക്കാനാകും. എന്നിരുന്നാലും, കീയിലെ ഓരോ പ്രതീകത്തിനും ഒരു പുതിയ റാൻഡം നമ്പർ സൃഷ്ടിക്കുന്നതിനുള്ള ചെലവ് സാധാരണയായി അസ്വീകാര്യമാണ്. പ്രായോഗികമായി, പ്രോഗ്രാം 14.1-ൽ കാണിച്ചിരിക്കുന്ന ഒത്തുതീർപ്പ് ഓരോ കീ പ്രതീകത്തിനും വ്യത്യസ്ത ക്രമരഹിത സംഖ്യകളുടെ ഒരു നിര സംഭരിക്കാതെ, ലളിതമായ ഒരു വ്യാജ-റാൻഡം സീക്വൻസ് സൃഷ്ടിച്ചുകൊണ്ട് ഗുണകങ്ങളിൽ വ്യത്യാസം വരുത്തുന്നതിലൂടെ നേടാനാകും.

ചുരുക്കത്തിൽ, ഒരു അമൂർത്ത ചിഹ്ന പട്ടിക നടപ്പിലാക്കാൻ ഹാഷിംഗ് ഉപയോഗിക്കുന്നതിന്, നിങ്ങൾ ആദ്യം ഒരു ഹാഷ് ഓപ്പറേഷൻ ഉൾപ്പെടുത്തുന്നതിന് അബ്‌സ്‌ട്രാക്റ്റ് ടൈപ്പ് ഇന്റർഫേസ് വിപുലീകരിക്കേണ്ടതുണ്ട്, ഇത് ടേബിളിന്റെ വലുപ്പത്തേക്കാൾ ചെറിയ നെഗറ്റീവ് അല്ലാത്ത പൂർണ്ണസംഖ്യകളിലേക്ക് കീകൾ മാപ്പ് ചെയ്യുന്നു.

ഇത്യാദി.). ഒന്നോ അല്ലെങ്കിൽ മറ്റൊരു ഹാഷ് ഫംഗ്ഷന്റെ തിരഞ്ഞെടുപ്പ് നിർണ്ണയിക്കുന്നത് പരിഹരിക്കപ്പെടുന്ന പ്രശ്നത്തിന്റെ പ്രത്യേകതകളാണ്. ഹാഷ് ഫംഗ്‌ഷനുകളുടെ ഏറ്റവും ലളിതമായ ഉദാഹരണങ്ങൾ ചെക്ക്‌സം അല്ലെങ്കിൽ CRC ആണ്.

പൊതുവേ, ഉറവിട ഡാറ്റയും ഹാഷ് കോഡും തമ്മിൽ പരസ്പരം കത്തിടപാടുകൾ ഇല്ല. അതിനാൽ, ഒരേ ഹാഷ് കോഡുകൾ നൽകുന്ന നിരവധി ഡാറ്റാ സെറ്റുകൾ ഉണ്ട് - കൂട്ടിയിടികൾ എന്ന് വിളിക്കപ്പെടുന്നവ. ഹാഷ് ഫംഗ്ഷനുകളുടെ "ഗുണനിലവാരം" വിലയിരുത്തുന്നതിൽ കൂട്ടിയിടികളുടെ സംഭാവ്യത ഒരു പ്രധാന പങ്ക് വഹിക്കുന്നു.

ചെക്ക്സംസ്

ഹാർഡ്‌വെയർ പിശകുകൾ ഉൾപ്പെടെയുള്ള ബോധപൂർവമല്ലാത്ത വികലങ്ങളിൽ നിന്ന് പരിരക്ഷിക്കാൻ ഉപയോഗിക്കുന്ന ഹാർഡ്‌വെയർ അൽഗോരിതങ്ങളിൽ സങ്കീർണ്ണമല്ലാത്തതും വളരെ വേഗതയുള്ളതും എളുപ്പത്തിൽ നടപ്പിലാക്കിയതുമാണ്.

കണക്കുകൂട്ടൽ വേഗത ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്‌ഷനുകളേക്കാൾ പതിനായിരക്കണക്കിന് മടങ്ങ് വേഗതയുള്ളതും ഹാർഡ്‌വെയർ നടപ്പിലാക്കുന്നതിൽ വളരെ ലളിതവുമാണ്.

അത്തരമൊരു ഉയർന്ന വേഗതയ്ക്കുള്ള വില ക്രിപ്റ്റോഗ്രാഫിക് ശക്തിയുടെ അഭാവമാണ് - മുൻകൂട്ടി അറിയാവുന്ന തുകയിലേക്ക് സന്ദേശം ക്രമീകരിക്കാനുള്ള എളുപ്പമുള്ള അവസരം. കൂടാതെ, ചെക്ക്‌സം (സാധാരണ: 32 ബിറ്റുകൾ) സാധാരണയായി ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷുകളേക്കാൾ വീതി കുറവാണ് (സാധാരണ: 128, 160, 256 ബിറ്റുകൾ), അതായത് മനഃപൂർവമല്ലാത്ത കൂട്ടിയിടികൾ സംഭവിക്കാം.

ഒരു സന്ദേശത്തെ 32- അല്ലെങ്കിൽ 16-ബിറ്റ് വാക്കുകളായി വിഭജിച്ച് അവയെ സംഗ്രഹിക്കുക എന്നതാണ് അത്തരമൊരു അൽഗോരിതത്തിന്റെ ഏറ്റവും ലളിതമായ കേസ്, ഉദാഹരണത്തിന്, TCP/IP-ൽ ഇത് ഉപയോഗിക്കുന്നു.

ഒരു ചട്ടം പോലെ, ഒരു നിശ്ചിത ദൈർഘ്യത്തിലേക്ക് തുടർച്ചയായി നിരവധി തെറ്റായ ബിറ്റുകൾ പോലെയുള്ള സാധാരണ ഹാർഡ്‌വെയർ പിശകുകൾ ട്രാക്കുചെയ്യുന്നതിന് അത്തരമൊരു അൽഗോരിതം ആവശ്യമാണ്. അൽഗോരിതങ്ങളുടെ കുടുംബം എന്ന് വിളിക്കപ്പെടുന്നവ "സൈക്ലിക് റിഡൻഡൻസി കോഡ്" ഈ ആവശ്യകതകൾ നിറവേറ്റുന്നു. ഉദാഹരണത്തിന്, ZIP ഉപകരണങ്ങളിൽ ഉപയോഗിക്കുന്ന CRC32 ഇതിൽ ഉൾപ്പെടുന്നു.

ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷനുകൾ

നിലവിലുള്ള നിരവധി ഹാഷ് ഫംഗ്‌ഷനുകളിൽ, ക്രിപ്‌റ്റോഗ്രഫിയിൽ ഉപയോഗിക്കുന്ന ക്രിപ്‌റ്റോഗ്രാഫിക്കായി ശക്തമായ ഹാഷ് ഫംഗ്‌ഷനുകൾ വേർതിരിച്ചറിയുന്നത് പതിവാണ്. ഒരു ക്രിപ്‌റ്റോ-റെസിസ്റ്റന്റ് ഹാഷ് ഫംഗ്‌ഷൻ ആദ്യം ഉണ്ടായിരിക്കണം കൂട്ടിയിടി പ്രതിരോധംരണ്ട് തരം:

ഹാഷിംഗ് ഉപയോഗിക്കുന്നു

ചില ഡാറ്റാ ഘടനകളിലും ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു - ഹാഷ് ടേബിളുകൾ, കാർട്ടീഷ്യൻ മരങ്ങൾ. ഈ കേസിൽ ഹാഷ് ഫംഗ്ഷന്റെ ആവശ്യകതകൾ വ്യത്യസ്തമാണ്:

  • നല്ല ഡാറ്റ മിക്സബിലിറ്റി
  • വേഗത്തിലുള്ള കണക്കുകൂട്ടൽ അൽഗോരിതം

ഡാറ്റ അനുരഞ്ജനം

പൊതുവേ, ഒറിജിനൽ ഉപയോഗിക്കാതെ ചില വിവരങ്ങൾ ഒറിജിനലുമായി സാമ്യമുള്ളതായിരിക്കാൻ പരിശോധിക്കുന്നതായി ഈ ആപ്ലിക്കേഷനെ വിവരിക്കാം. അനുരഞ്ജനത്തിനായി, പരിശോധിച്ചുറപ്പിക്കുന്ന വിവരങ്ങളുടെ ഹാഷ് മൂല്യം ഉപയോഗിക്കുന്നു. ഈ ആപ്ലിക്കേഷന്റെ രണ്ട് പ്രധാന മേഖലകളുണ്ട്:

പിശകുകൾക്കായി പരിശോധിക്കുന്നു

ഉദാഹരണത്തിന്, പ്രധാന വാചകത്തിനൊപ്പം ആശയവിനിമയ ചാനലിലൂടെ ചെക്ക്സം കൈമാറ്റം ചെയ്യപ്പെടാം. സ്വീകരിക്കുന്ന അവസാനത്തിൽ, ചെക്ക്സം വീണ്ടും കണക്കാക്കുകയും ട്രാൻസ്മിറ്റ് ചെയ്ത മൂല്യവുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യാം. ഒരു പൊരുത്തക്കേട് കണ്ടെത്തിയാൽ, ട്രാൻസ്മിഷൻ സമയത്ത് വികലത സംഭവിച്ചുവെന്നും ഒരു ആവർത്തനം അഭ്യർത്ഥിക്കാമെന്നും ഇതിനർത്ഥം.

ഈ കേസിൽ ഹാഷിംഗിന്റെ ഒരു ഗാർഹിക അനലോഗ്, നീങ്ങുമ്പോൾ, ലഗേജുകളുടെ എണ്ണം മെമ്മറിയിൽ സൂക്ഷിക്കുമ്പോൾ സാങ്കേതികതയായിരിക്കാം. തുടർന്ന്, പരിശോധിക്കാൻ, ഓരോ സ്യൂട്ട്കേസിനെക്കുറിച്ച് നിങ്ങൾ ഓർമ്മിക്കേണ്ടതില്ല, പക്ഷേ അവ എണ്ണുക. ഒരു പൊരുത്തം അർത്ഥമാക്കുന്നത് ഒരു സ്യൂട്ട്കേസും നഷ്ടപ്പെട്ടിട്ടില്ല എന്നാണ്. അതായത്, ലഗേജുകളുടെ എണ്ണം അതിന്റെ ഹാഷ് കോഡാണ്.

പാസ്ഫ്രെയ്സ് പരിശോധന

മിക്ക കേസുകളിലും, പാസ്‌ഫ്രെയ്‌സുകൾ ടാർഗെറ്റുകളിൽ സംഭരിക്കുന്നില്ല, അവയുടെ ഹാഷ് മൂല്യങ്ങൾ മാത്രമേ സംഭരിച്ചിട്ടുള്ളൂ. പാസ്‌ഫ്രെയ്‌സുകൾ സംഭരിക്കുന്നത് അഭികാമ്യമല്ല, കാരണം വാക്യങ്ങളുള്ള ഒരു ഫയലിലേക്ക് അനധികൃത ആക്‌സസ് ഉണ്ടായാൽ, ആക്രമണകാരി എല്ലാ പാസ്‌ഫ്രെയ്‌സുകളും കണ്ടെത്തുകയും അവ ഉടനടി ഉപയോഗിക്കുകയും ചെയ്യും, കൂടാതെ ഹാഷ് മൂല്യങ്ങൾ സംഭരിക്കുമ്പോൾ, അവൻ ഹാഷ് മൂല്യങ്ങൾ മാത്രമേ പഠിക്കൂ. യഥാർത്ഥ ഡാറ്റയിലേക്ക് പഴയപടിയാക്കാൻ കഴിയാത്തവ, ഈ സാഹചര്യത്തിൽ, പാസ്ഫ്രെയ്സ്. പ്രാമാണീകരണ പ്രക്രിയയിൽ, നൽകിയ പാസ്‌ഫ്രെയ്‌സിന്റെ ഹാഷ് മൂല്യം കണക്കാക്കുകയും സംരക്ഷിച്ച ഒന്നുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു.

ഈ സാഹചര്യത്തിൽ ഒരു ഉദാഹരണം ഗ്നു/ലിനക്സും മൈക്രോസോഫ്റ്റ് വിൻഡോസ് എക്സ്പിയും ആയിരിക്കും. ഉപയോക്തൃ അക്കൗണ്ടുകളിൽ നിന്ന് പാസ്‌ഫ്രെയ്‌സുകളുടെ ഹാഷ് മൂല്യങ്ങൾ മാത്രമാണ് അവർ സംഭരിക്കുന്നത്.

ഡാറ്റ വീണ്ടെടുക്കൽ വേഗത്തിലാക്കുക

ഉദാഹരണത്തിന്, ടെക്സ്റ്റ് ഫീൽഡുകൾ ഒരു ഡാറ്റാബേസിലേക്ക് എഴുതുമ്പോൾ, അവയുടെ ഹാഷ് കോഡ് കണക്കാക്കുകയും ഡാറ്റ ആ ഹാഷ് കോഡിന് അനുയോജ്യമായ ഒരു വിഭാഗത്തിൽ സ്ഥാപിക്കുകയും ചെയ്യാം. തുടർന്ന്, ഡാറ്റയ്‌ക്കായി തിരയുമ്പോൾ, നിങ്ങൾ ആദ്യം ടെക്‌സ്‌റ്റിന്റെ ഹാഷ് കോഡ് കണക്കാക്കേണ്ടതുണ്ട്, ഏത് വിഭാഗത്തിലാണ് നിങ്ങൾ അത് തിരയേണ്ടതെന്ന് നിങ്ങൾക്ക് ഉടനടി അറിയാം, അതായത്, നിങ്ങൾ മുഴുവൻ ഡാറ്റാബേസിലും തിരയേണ്ടതില്ല, പക്ഷേ മാത്രം അതിന്റെ ഒരു വിഭാഗത്തിൽ (ഇത് തിരയലിനെ വളരെയധികം വേഗത്തിലാക്കുന്നു).

ഈ സാഹചര്യത്തിൽ ഹാഷിംഗിന്റെ ഒരു സാധാരണ അനലോഗ് അക്ഷരമാലാക്രമത്തിൽ ഒരു നിഘണ്ടുവിൽ വാക്കുകൾ സ്ഥാപിക്കുന്നതാണ്. ഒരു വാക്കിന്റെ ആദ്യ അക്ഷരം അതിന്റെ ഹാഷ് കോഡാണ്, തിരയുമ്പോൾ, ഞങ്ങൾ നിഘണ്ടു മുഴുവൻ നോക്കുന്നില്ല, മറിച്ച് ആവശ്യമുള്ള അക്ഷരം മാത്രം.

അൽഗോരിതങ്ങളുടെ പട്ടിക

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • RIPEMD-160
  • RIPEMD-320
  • സ്നെഫ്രു
  • കടുവ (ചുഴി
  • IP ഇന്റർനെറ്റ് ചെക്ക്സം (RFC 1071)

ലിങ്കുകൾ

വിക്കിമീഡിയ ഫൗണ്ടേഷൻ. 2010.

മറ്റ് നിഘണ്ടുവുകളിൽ "ഹാഷ് കോഡ്" എന്താണെന്ന് കാണുക:

    ഹാഷ് കോഡ്- പ്രോഗ്രാം കോഡിന്റെയോ ഡാറ്റാ സെറ്റിന്റെയോ എല്ലാ ബൈറ്റുകളുമായും ഒരു ഗണിത സംയോജനത്തിന്റെ ഫലം. ഹാഷിംഗ് അൽഗോരിതത്തിന്റെ ഫലത്തിൽ ചില ബൈറ്റുകൾ മാത്രമേ ഉൾപ്പെട്ടിട്ടുള്ളൂ, കൂടാതെ പ്രോഗ്രാം കോഡിലോ ഡാറ്റയിലോ എന്തെങ്കിലും മാറ്റം വരുത്തുന്ന വിധത്തിലാണ് അൽഗോരിതം രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്... ... ഔദ്യോഗിക പദാവലി

    ഹാഷ് കോഡ്- പ്രോഗ്രാം കോഡിന്റെയോ ഡാറ്റാ സെറ്റിന്റെയോ എല്ലാ ബൈറ്റുകളുമായും ഒരു ഗണിത സംയോജനത്തിന്റെ ഫലം. ഹാഷിംഗ് അൽഗോരിതത്തിന്റെ ഫലത്തിൽ ചില ബൈറ്റുകൾ മാത്രമേ ഉൾപ്പെട്ടിട്ടുള്ളൂ, കൂടാതെ പ്രോഗ്രാം കോഡിലോ ഡാറ്റയിലോ എന്തെങ്കിലും മാറ്റം വരുത്തുന്ന വിധത്തിലാണ് അൽഗോരിതം രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്... ...

    ഒരു ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച് സന്ദേശ പ്രാമാണീകരണ കോഡ്- (ITU T N.235.3, ITU T N.235.1). വിഷയങ്ങൾ: ടെലികമ്മ്യൂണിക്കേഷൻസ്, അടിസ്ഥാന ആശയങ്ങൾ EN ഹാഷ്ഡ് സന്ദേശ പ്രാമാണീകരണ കോഡ്HMAC... സാങ്കേതിക വിവർത്തകന്റെ ഗൈഡ്

    പ്രോഗ്രാമിംഗിൽ, അസോസിയേറ്റീവ് അറേ ഇന്റർഫേസ് നടപ്പിലാക്കുന്ന ഒരു ഡാറ്റാ ഘടനയാണ് ഹാഷ് ടേബിൾ, അതായത്, ജോഡികൾ (കീ, മൂല്യം) സംഭരിക്കാനും മൂന്ന് പ്രവർത്തനങ്ങൾ നടത്താനും ഇത് നിങ്ങളെ അനുവദിക്കുന്നു: ഒരു പുതിയ ജോഡി ചേർക്കുന്നതിനുള്ള പ്രവർത്തനം, തിരയൽ പ്രവർത്തനം, ഇല്ലാതാക്കൽ പ്രവർത്തനം. ... വിക്കിപീഡിയ

    MAC (സന്ദേശ പ്രാമാണീകരണ കോഡ്) പരസ്പര വിശ്വാസമുള്ള പങ്കാളികളുള്ള സന്ദേശ പ്രാമാണീകരണ പ്രോട്ടോക്കോളുകളിൽ അനുകരണ സംരക്ഷണം നൽകുന്നതിനുള്ള ഒരു ഉപാധിയാണ്, ... ... വിക്കിപീഡിയയിലേക്ക് ചേർത്തിരിക്കുന്ന ഒരു പ്രത്യേക പ്രതീകങ്ങൾ

    ഹാഷിംഗ് (ചിലപ്പോൾ ഹാഷിംഗ്) എന്നത് അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു ഇൻപുട്ട് ഡാറ്റ അറേയെ ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള ഔട്ട്പുട്ട് ബിറ്റ് സ്ട്രിംഗായി മാറ്റുന്നതാണ്. അത്തരം പരിവർത്തനങ്ങളെ ഹാഷ് ഫംഗ്‌ഷനുകൾ അല്ലെങ്കിൽ കൺവ്യൂഷൻ ഫംഗ്‌ഷനുകൾ എന്നും വിളിക്കുന്നു, അവയുടെ ഫലങ്ങൾ... ... വിക്കിപീഡിയ

    ഈ ലേഖനം കോഡിനെക്കുറിച്ചാണ്. ബ്രെയിൻസ്റ്റോമിംഗ് രീതിക്ക്, CRC കാർഡ് കാണുക. സൈക്ലിക് റിഡൻഡൻസി ചെക്ക് (CRC) എന്നത്... ... വിക്കിപീഡിയയുടെ സമഗ്രത പരിശോധിക്കുന്നതിനായി രൂപകൽപ്പന ചെയ്ത ഒരു ചെക്ക്സം കണക്കാക്കുന്നതിനുള്ള ഒരു അൽഗോരിതം ആണ്.

    - (ഹാഷ് അടിസ്ഥാനമാക്കിയുള്ള സന്ദേശ പ്രാമാണീകരണ കോഡ്, സന്ദേശ പ്രാമാണീകരണ ഹാഷ് കോഡ് എന്നതിന്റെ ചുരുക്കം). വിശ്വസനീയമല്ലാത്ത ഒരു പരിതസ്ഥിതിയിൽ കൈമാറ്റം ചെയ്യപ്പെടുന്നതോ സംഭരിക്കുന്നതോ ആയ വിവരങ്ങളുടെ സമഗ്രത പരിശോധിക്കുന്നതിനുള്ള ഒരു മാർഗം ലോകത്തിന്റെ അവിഭാജ്യവും അനിവാര്യവുമായ ഭാഗമാണ്... ... വിക്കിപീഡിയ

    MI 2891-2004: ശുപാർശ. GSOEI. അളക്കുന്ന ഉപകരണങ്ങളുടെ സോഫ്റ്റ്വെയറിനുള്ള പൊതുവായ ആവശ്യകതകൾ- ടെർമിനോളജി MI 2891 2004: ശുപാർശ. GSOEI. അളക്കുന്ന ഉപകരണങ്ങളുടെ സോഫ്‌റ്റ്‌വെയറിനായുള്ള പൊതുവായ ആവശ്യകതകൾ: പ്രക്ഷേപണത്തിനോ വ്യാഖ്യാനത്തിനോ പ്രോസസ്സിംഗിനോ അനുയോജ്യമായ രൂപത്തിൽ അവതരിപ്പിച്ച ഡാറ്റ അളക്കൽ വിവരങ്ങൾ. പദത്തിന്റെ നിർവചനങ്ങൾ ... ... മാനദണ്ഡവും സാങ്കേതികവുമായ ഡോക്യുമെന്റേഷന്റെ നിബന്ധനകളുടെ നിഘണ്ടു-റഫറൻസ് പുസ്തകം

പലപ്പോഴും, ടോറന്റുകളോ ഫയലുകളോ ഡൗൺലോഡ് ചെയ്യുമ്പോൾ, വിവരണം "ad33e486d0578a892b8vbd8b19e28754" (ഉദാഹരണത്തിന്, ex.ua ൽ) പോലെയുള്ള എന്തെങ്കിലും പറയുന്നു, പലപ്പോഴും "md5" എന്ന പ്രിഫിക്‌സിനൊപ്പം. ഇതാണ് ഹാഷ് കോഡ് - ഇൻകമിംഗ് ഡാറ്റ പ്രോസസ്സ് ചെയ്ത ശേഷം ഹാഷ് ഫംഗ്ഷൻ ഉണ്ടാക്കുന്ന ഫലം. ഇംഗ്ലീഷിൽ നിന്ന് വിവർത്തനം ചെയ്ത ഹാഷ് എന്നാൽ ആശയക്കുഴപ്പം, മരിജുവാന, കള, അല്ലെങ്കിൽ നന്നായി അരിഞ്ഞ ഇറച്ചി, പച്ചക്കറികൾ എന്നിവയുടെ വിഭവം എന്നാണ് അർത്ഥമാക്കുന്നത്. വളരെ വളരെ ബുദ്ധിമുട്ടാണ്, ഏതാണ്ട് അസാധ്യമാണെന്ന് ഒരാൾ പറഞ്ഞേക്കാം. അപ്പോൾ ചോദ്യം ഉയർന്നുവരുന്നു: "എന്തുകൊണ്ടാണ് ഇതെല്ലാം ആവശ്യമായിരിക്കുന്നത്? അവർ മനസ്സിലാക്കാൻ കഴിയാത്ത ഗോബിൾഡിഗൂക്ക് നൽകുന്നു, അത് മനസ്സിലാക്കാൻ കഴിയില്ല?" ഇത് ഈ ലേഖനത്തിൽ ചർച്ച ചെയ്യും.

എന്താണ് ഒരു ഹാഷ് ഫംഗ്‌ഷൻ, അത് എങ്ങനെ പ്രവർത്തിക്കും?

ഈ ഫംഗ്‌ഷൻ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നത് അനിയന്ത്രിതമായ വലിയ വലുപ്പത്തിലുള്ള ഇൻകമിംഗ് ഡാറ്റയെ ഒരു നിശ്ചിത-ദൈർഘ്യ ഫലമാക്കി മാറ്റുന്നതിനാണ്. അത്തരമൊരു പരിവർത്തന പ്രക്രിയയെ ഹാഷിംഗ് എന്ന് വിളിക്കുന്നു, ഫലം ഒരു ഹാഷ് അല്ലെങ്കിൽ ഹാഷ് കോഡ് ആണ്. ചിലപ്പോൾ "വിരലടയാളം" അല്ലെങ്കിൽ "സന്ദേശം ഡൈജസ്റ്റ്" എന്നീ വാക്കുകളും ഉപയോഗിക്കാറുണ്ട്, എന്നാൽ പ്രായോഗികമായി അവ വളരെ കുറവാണ്. ഏത് ഡാറ്റാ അറേയെയും ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള പ്രതീകങ്ങളുടെ ഒരു നിശ്ചിത ശ്രേണിയിലേക്ക് എങ്ങനെ മാറ്റാം എന്നതിന് നിരവധി വ്യത്യസ്ത അൽഗോരിതങ്ങൾ ഉണ്ട്. 1991-ൽ വികസിപ്പിച്ചെടുത്ത ഏറ്റവും വ്യാപകമായി ഉപയോഗിക്കുന്ന അൽഗോരിതം md5 എന്നാണ് അറിയപ്പെടുന്നത്. ഇന്ന് md5 കാലഹരണപ്പെട്ടതാണെങ്കിലും ഉപയോഗത്തിന് ശുപാർശ ചെയ്തിട്ടില്ലെങ്കിലും, അത് ഇപ്പോഴും ഉപയോഗത്തിലാണ്, പലപ്പോഴും "ഹാഷ് കോഡ്" എന്ന വാക്കിന് പകരം, സൈറ്റുകൾ md5 എഴുതുകയും കോഡ് തന്നെ സൂചിപ്പിക്കുകയും ചെയ്യുന്നു.

എന്തുകൊണ്ട് ഒരു ഹാഷ് ഫംഗ്ഷൻ ആവശ്യമാണ്?

ഫലം അറിയുന്നത്, ഇൻപുട്ട് ഡാറ്റ നിർണ്ണയിക്കുന്നത് മിക്കവാറും അസാധ്യമാണ്, എന്നാൽ അതേ ഇൻപുട്ട് ഡാറ്റ അതേ ഫലം നൽകുന്നു. അതിനാൽ, പാസ്‌വേഡ്, ലോഗിൻ, ഐഡി നമ്പർ, മറ്റ് വ്യക്തിഗത വിവരങ്ങൾ എന്നിവ പോലുള്ള വളരെ പ്രധാനപ്പെട്ട വിവരങ്ങൾ സംഭരിക്കുന്നതിന് ഹാഷ് ഫംഗ്‌ഷൻ (കൺവലൂഷൻ ഫംഗ്‌ഷൻ എന്നും അറിയപ്പെടുന്നു) പലപ്പോഴും ഉപയോഗിക്കുന്നു. ഉപയോക്താവ് നൽകുന്ന വിവരങ്ങളെ ഡാറ്റാബേസിൽ സംഭരിച്ചിരിക്കുന്നവയുമായി താരതമ്യം ചെയ്യുന്നതിനുപകരം, അവരുടെ ഹാഷുകൾ താരതമ്യം ചെയ്യുന്നു. ആകസ്മികമായ വിവരങ്ങൾ ചോർന്നാൽ, ആർക്കും അവരുടെ സ്വന്തം ആവശ്യങ്ങൾക്കായി പ്രധാനപ്പെട്ട ഡാറ്റ ഉപയോഗിക്കാൻ കഴിയില്ലെന്ന് ഇത് ഉറപ്പാക്കുന്നു. ഹാഷ് കോഡ് താരതമ്യം ചെയ്യുന്നതിലൂടെ, ഇന്റർനെറ്റിൽ നിന്ന് ഫയലുകൾ ശരിയായി ഡൗൺലോഡ് ചെയ്യുന്നുണ്ടോ എന്ന് പരിശോധിക്കുന്നതും സൗകര്യപ്രദമാണ്, പ്രത്യേകിച്ചും ഡൗൺലോഡ് സമയത്ത് കണക്ഷൻ തടസ്സങ്ങളുണ്ടെങ്കിൽ.

ഹാഷ് ഫംഗ്ഷനുകൾ: അവ എന്തൊക്കെയാണ്?ടി

അതിന്റെ ഉദ്ദേശ്യത്തെ ആശ്രയിച്ച്, ഒരു ഹാഷ് ഫംഗ്ഷൻ മൂന്ന് തരങ്ങളിൽ ഒന്നായിരിക്കാം:

1. വിവരങ്ങളുടെ സമഗ്രത പരിശോധിക്കുന്നതിനുള്ള പ്രവർത്തനം

നെറ്റ്‌വർക്കിൽ സംഭവിക്കുമ്പോൾ, പാക്കറ്റിന്റെ ഒരു ഹാഷ് കണക്കാക്കുന്നു, കൂടാതെ ഈ ഫലവും ഫയലിനൊപ്പം കൈമാറ്റം ചെയ്യപ്പെടുന്നു. റിസപ്ഷനിൽ, ഹാഷ് കോഡ് വീണ്ടും കണക്കാക്കുകയും നെറ്റ്‌വർക്കിൽ ലഭിച്ച മൂല്യവുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു. കോഡ് പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ, ഇത് പിശകുകളെ സൂചിപ്പിക്കുന്നു, കേടായ പാക്കറ്റ് വീണ്ടും കൈമാറ്റം ചെയ്യപ്പെടും. ഈ ഫംഗ്‌ഷന് വേഗതയേറിയ കണക്കുകൂട്ടൽ വേഗതയുണ്ട്, എന്നാൽ ചെറിയ എണ്ണം ഹാഷ് മൂല്യങ്ങളും മോശം സ്ഥിരതയും. ഇത്തരത്തിലുള്ള ഒരു ഉദാഹരണം: CRC32, ഇതിന് 232 വ്യത്യസ്ത മൂല്യങ്ങൾ മാത്രമേയുള്ളൂ.

2. ക്രിപ്റ്റോഗ്രാഫിക് ഫംഗ്ഷൻ

(ND) എന്നതിനെതിരായ സംരക്ഷണത്തിനായി ഉപയോഗിക്കുന്നു. നെറ്റ്‌വർക്കിലൂടെ ഫയൽ കൈമാറ്റം ചെയ്യുന്നതിനിടയിൽ ഒരു അപകടത്തിന്റെ ഫലമായി ഡാറ്റ അഴിമതി സംഭവിച്ചിട്ടുണ്ടോ എന്ന് പരിശോധിക്കാൻ അവർ നിങ്ങളെ അനുവദിക്കുന്നു. ഈ കേസിലെ യഥാർത്ഥ ഹാഷ് പൊതുവായി ലഭ്യമാണ്, തത്ഫലമായുണ്ടാകുന്ന ഫയലിന്റെ ഹാഷ് വ്യത്യസ്ത പ്രോഗ്രാമുകൾ ഉപയോഗിച്ച് കണക്കാക്കാം. അത്തരം പ്രവർത്തനങ്ങൾക്ക് ദീർഘവും സുസ്ഥിരവുമായ ആയുസ്സ് ഉണ്ട്, കൂട്ടിയിടികൾക്കായി തിരയുന്നത് (വ്യത്യസ്ത ഉറവിട ഡാറ്റയിൽ നിന്നുള്ള ഫലങ്ങളുടെ യാദൃശ്ചികത) വളരെ ബുദ്ധിമുട്ടാണ്. പാസ്‌വേഡുകളും (SH1, SH2, MD5) മറ്റ് വിലപ്പെട്ട വിവരങ്ങളും ഡാറ്റാബേസിൽ സൂക്ഷിക്കാൻ ഉപയോഗിക്കുന്ന ഫംഗ്‌ഷനുകളാണിത്.

3. കാര്യക്ഷമമായ ഒരു ഡാറ്റ ഘടന സൃഷ്ടിക്കാൻ രൂപകൽപ്പന ചെയ്ത ഒരു ഫംഗ്ഷൻ

ഹാഷ് ടേബിൾ എന്ന് വിളിക്കപ്പെടുന്ന ഒരു പ്രത്യേക ഘടനയിലുള്ള വിവരങ്ങളുടെ ഒതുക്കമുള്ളതും ക്രമാനുഗതവുമായ ഓർഗനൈസേഷനാണ് ഇതിന്റെ ലക്ഷ്യം. പുതിയ വിവരങ്ങൾ ചേർക്കാനും വിവരങ്ങൾ ഇല്ലാതാക്കാനും ആവശ്യമായ ഡാറ്റ വളരെ ഉയർന്ന വേഗതയിൽ തിരയാനും അത്തരമൊരു പട്ടിക നിങ്ങളെ അനുവദിക്കുന്നു.