Функция на хеширане в Java - Приложения на Hash функция

Съдържание:

Anonim

Въведение в функцията за хеширане на Java

Както знаем, че Java е обектно-ориентиран език, следователно трябва да има механизъм за описание на състоянието на даден обект, без значение колко голям е обектът. Функцията за хеширане в Java възникна, за да изпълни това изискване.

Какво е хешинг функция?

Функция Hash може да бъде определена като функция, която връща цяло число, съответстващо на обект. Функцията Hash винаги връща една и съща цялостна стойност за един и същ обект. Целочислената стойност, върната от хеш функцията, се нарича Hash Value. Следват важните моменти във връзка с функцията Hash:

  • Винаги връща цяло число (4 байта) за обект.
  • Не можем да изчислим състоянието на обекта от хеш стойността, която е хеш функциите са необратими по своята същност.
  • Два равни обекта ще имат една и съща хеш стойност.
  • Два неравностойни обекта не винаги имат различни стойности на Hash.

Приложения на Hash функция

Ето често срещаните приложения на хеш функциите:

1. Структури на данните

Почти всеки език за програмиране съдържа структури, базирани на хеш. Например java съдържа таблица на Hash, Hash Map, Hash Set, Tree Set структури на данни, които се базират на функцията Hash. Основата на тези структури от данни е Key-Value дизайн, при който всеки ключ е уникален, докато една и съща стойност може да съществува за няколко ключа.

2. Съобщение за съобщения

Този алгоритъм се използва при проверка на целостта на данните. Този алгоритъм приема съобщение с всякаква дължина като вход и произвежда данни с фиксирана дължина (128-битова) като изход. Примери за алгоритми за усвояване на съобщения включват MD2, MD4, MD5 и MD6.

3. Безопасен алгоритъм на хеш

Този алгоритъм се използва за защита на данните и се използва в приложения и протоколи като Secure Socket Layer (SSL). SHA-0, SHA-1, SHA-2 и SHA-3 са често срещани категории на алгоритъма за сигурен хеш.

4. Проверка и съхранение на паролата

Нека да разгледаме сценарий за влизане, при който когато се въведе парола за удостоверяване на потребител, се изчислява хеш стойност на въведената парола и се изпраща по мрежата до сървъра, където се съхранява хешът на оригинала. Това се прави, за да се гарантира, че не се извършва смъркане, когато парола се изпраща от клиента на сървъра.

5. Работа на компилатора

Тъй като в езика за програмиране се използват различни ключови думи, за да се разграничат тези ключови думи и идентификатори, компилаторът използва набор хеш, който се реализира с помощта на хеш таблица, за да съхранява всички тези ключови думи и идентификатори.

6. Алгоритъм на Рабин-Карп

Това е алгоритъм за търсене, който използва хеширането за търсене на един или повече модели в даден низ. Това е един от най-често използваните алгоритми.

7. Сравним и сравнителен интерфейс

Тези интерфейси съдържат функции, които се използват за сравняване на два обекта наведнъж. Възвръщаемата стойност на тези функции може да бъде отрицателна, нулева или положителна въз основа на това дали даден обект е по-малък, равен или по-голям от обекта, с който сравняваме. Вътрешните сравнителни и съпоставими интерфейси използват хеш функция, за да сравняват обектите един от друг.

8. Приоритетна опашка

Опашката с приоритет е за разлика от нормалната опашка, която следва FIFO (First in First out) ред. В приоритетните елементи опашката се подрежда в потребителски ред въз основа на техния приоритет, който е вътрешно реализиран с помощта на сравнителен и сравнителен, чиито стажанти са базирани на Hash Functions.

Проектиране на хеш функции

Ето някои общи дизайнерски принципи за създаване на хеш функции:

  • Хеш функцията трябва да бъде ефективно оценена.
  • Стойностите на хеш, изчислени от хеш функциите, трябва да бъдат разпределени равномерно, това помага да се избегнат сблъсъци.
  • Язичният език за програмиране осигурява обща функция на хеширане с метода hashCode () в суперкласа Object.

public int hashCode ()(
//Logic goes here
)

Хеш сблъсък в Java

Хеш сблъсък възниква, когато два или повече обекта върнат една и съща хеш стойност. Нека вземем пример за java хеш карта, която съхранява данни в двойки ключ-стойност. Когато поставим обект в хеш карта, се изчислява хеш стойността на ключа и въз основа на това местоположение на кофата на хеш стойността за съхранение на стойност обект е намерен. Обектите, които имат различни хеш-стойности, трябва да влизат в различни групи. Когато два или повече обекта имат една и съща хеш стойност, те се съхраняват в едно и също място на кофата, като се използва допълнителна структура на данни, наречена свързан списък. Всички обекти, които имат една и съща хеш стойност, се свързват заедно, като се използва свързан списък. Този механизъм се нарича верига. Следват начините за справяне със сблъсъците е хеш функция:

  • Вериги: Както вече беше обхванато, идеята зад верижното създаване е да се създаде свързан списък на обекти със същата хеш стойност. Оковаването на вериги е проста техника, но изисква допълнителна режийна памет.
  • Отворено адресиране: В тази техника всички елементи се съхраняват в хеш таблица, в която всеки запис съдържа запис или NULL. Когато се търси елемент, всеки запис в хеш таблицата се търси за желания запис, докато не бъде намерен необходимия запис или се заключи, че записът не съществува в таблицата.

Предимства на хеширането

Следните са предимствата на хеширането:

  1. Сравнете съдържанието на два файла лесно и ефективно, без да ги отваряте.
  2. Функциите на хеш се използват при проверка на целостта на файл.
  3. С помощта на хеширане операцията по търсене в структурите от данни става по-бърза.
  4. Функциите на хеш играят жизненоважна роля в сигурността на данните, тъй като повечето алгоритми за защита и протоколи използват хеширането.
  5. Хеширането преобразува данни в по-къса стойност или ключ с фиксирана дължина, който представлява оригиналния низ, който може да бъде изпратен по мрежата.

Недостатъци на хеширането

Освен предимствата, има и някои ограничения на хеширането:

  1. Хеширането не може да бъде приложено за сортиране на данни.
  2. Хешътният сблъсък не може да бъде практически избегнат, което от своя страна води до неефективност.

Препоръчителни статии

Това е ръководство за Hashing Function в Java. Тук обсъждаме приложенията на хеш функцията, заедно с предимствата и недостатъците. Можете също да разгледате следните статии, за да научите повече -

  1. Декларация и инициализация на VB.Net
  2. Java програма, показваща HashMap и TreeMap
  3. Видове хеширане в СУБД
  4. Техники на стеганографията
  5. Масиви в Java програмиране
  6. Хешмап в Java