Hashing funkció Java - A hasítási funkció alkalmazása

Tartalomjegyzék:

Anonim

Bevezetés a Java hash funkcióhoz

Mivel tudjuk, hogy a Java objektum-orientált nyelv, ezért működnie kell egy mechanizmusnak, amely leírja az objektum állapotát, függetlenül attól, hogy egy objektum milyen nagy lehet. Ennek a követelménynek a teljesítéséhez a Java hashing Function jött létre.

Mi a hashing funkció?

A hasítási függvény meghatározható olyan függvényként, amely egy objektumnak megfelelő egész értéket ad vissza. A hasítási függvény mindig ugyanazt az egész értéket adja vissza ugyanazon objektumhoz. A hash függvény által visszaadott egész értéket Hash-értéknek nevezzük. Az alábbiakban bemutatjuk a fontos pontokat a Hash funkcióval kapcsolatban:

  • Mindig egész számot (4 bájt) ad vissza az objektumhoz.
  • Az objektumállapotot nem tudjuk kiszámítani a hash-értékből, amely szerint a hash-funkciók visszafordíthatatlan természetűek.
  • Két azonos objektum azonos hash-értékkel rendelkezik.
  • Két egyenlőtlen objektumnak nem mindig van különböző Hash értéke.

A hasítási funkció alkalmazása

A hash-funkciók általános alkalmazásai:

1. Adatstruktúrák

Szinte minden programozási nyelv hash-alapú adatszerkezeteket tartalmaz. Például a java tartalmaz Hash táblát, Hash Map, Hash Set, Tree Set adatstruktúrákat, amelyek a Hash függvényen alapulnak. Ezen adatszerkezetek alapja a kulcsérték-tervezés, ahol minden kulcs egyedi, míg ugyanaz az érték létezhet több kulcs esetén is.

2. Message Digest

Ezt az algoritmust használják az adatok integritásának ellenőrzésére. Ez az algoritmus bármilyen hosszúságú üzenetet vesz bemenetként, és rögzített hosszúságú (128 bites) adatot állít elő outputként. Az üzenetmegosztási algoritmusokra példaként említhetők az MD2, MD4, MD5 és MD6.

3. Biztonságos hasító algoritmus

Ezt az algoritmust az adatbiztonsághoz használják, és olyan alkalmazásokban és protokollokban használják, mint például a Secure Socket Layer (SSL). Az SHA-0, az SHA-1, az SHA-2 és az SHA-3 a Secure Hash algoritmus általános kategóriái.

4. Jelszó ellenőrzése és tárolása

Fontoljuk meg egy bejelentkezési forgatókönyvet, amikor egy jelszó megadásakor a felhasználó hitelesítésére kiszámítja a megadott jelszó hash értékét, és a hálózaton keresztül továbbítja azt a kiszolgálót, ahol az eredeti kivonat tárolódik. Ennek célja annak biztosítása, hogy ne szippantás történjen, amikor az ügyfél jelszót küld a kiszolgálóra.

5. A fordító működése

Mivel a programozási nyelvben különböző kulcsszavakat használnak, hogy megkülönböztessék ezeket a kulcsszavakat és az azonosítókat, a fordító egy kivonatkészletet használ, amelyet kivonat-táblázatok segítségével valósítanak meg ezen összes kulcsszó és azonosító tárolására.

6. Rabin-Karp algoritmus

Ez egy keresési algoritmus, amely a kivonatolást használja egy vagy több mintázat keresésére egy adott karakterláncon belül. Ez az egyik leggyakrabban használt algoritmus.

7. Összehasonlítható és összehasonlító interfészek

Ezek az interfészek olyan funkciókat tartalmaznak, amelyeket egyszerre két objektum összehasonlítására használnak. Ezeknek a függvényeknek a visszatérési értéke negatív, nulla vagy pozitív lehet attól függően, hogy egy adott objektum kisebb-e, egyenlő vagy nagyobb, mint az összehasonlítandó objektum. A belső összehasonlító és az összehasonlítható interfészek hash függvényt használnak az objektumok összehasonlításához.

8. Prioritási sor

A prioritási sor ellentétben a normál sorral, amely a FIFO (első az elsőben) sorrendet követi. A prioritási sorban az elemek egyedi sorrendben vannak elrendezve prioritásuk alapján, amelyet belsőleg hajtanak végre összehasonlítható és összehasonlító segítségével, amely gyakornokok a hasítási függvényeken alapulnak.

Hash funkciók tervezése

Íme néhány általános tervezési alapelv a hash-funkciók létrehozásához:

  • A hash-funkciót hatékonyan ki kell értékelni.
  • A hash-függvényekből kiszámított hasadási értékeket egyenletesen kell elosztani, ez segít elkerülni az ütközéseket.
  • A Java programozási nyelv általános kivonási funkciót biztosít a hashCode () módszerrel az Object szuperosztályban.

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

Hash ütközés Java-ban

A hash ütközések akkor fordulnak elő, amikor két vagy több objektum ugyanazt a hash értéket adja vissza. Vegyünk egy példát egy java-hash-térképre, amely az adatokat kulcs-érték párokban tárolja. Amikor egy objektumot egy hash térképre teszünk, kiszámítjuk a kulcs hash értékét, és ezen kivonat alapján megtaláljuk az objektum tárolására szolgáló hash value vödör helyét. Az eltérő hash értékekkel rendelkező objektumoknak különböző vödrökbe kell menniük. Ha két vagy több objektum azonos hash-értékkel rendelkezik, akkor ugyanazon a vödörben tárolják egy kiegészítő adatszerkezetet, amelyet összekapcsolt listának hívnak. Az összes azonos hash-értékkel rendelkező objektumot összekapcsolják egy összekapcsolt lista segítségével. Ezt a mechanizmust láncolásnak nevezik. Az alábbiakban bemutatjuk az ütközések kezelésének egy hash függvényét:

  • Láncolás: Ahogy már említettük, a láncolás mögött az az elv látható, hogy összekapcsoljuk az azonos hash értékű objektumok listáját. A láncolás egy egyszerű technika, de további memóriát igényel.
  • Nyílt címzés: Ebben a technikában az összes elemet egy kivonatos táblában tárolják, amelyben minden bejegyzés vagy rekordot, vagy NULL-t tartalmaz. Ha egy elemet keres, akkor a hash táblában minden tételnél megkeresi a kívánt rekordot, amíg meg nem találja a kívánt rekordot, vagy arra a következtetésre jutnak, hogy a rekord nem létezik a táblázatban.

A hashing előnyei

A hashing előnyei a következők:

  1. Hasonlítsa össze két fájl tartalmát egyszerűen és hatékonyan, anélkül, hogy megnyitná őket.
  2. A hasító funkciókat használják a fájl integritásának ellenőrzésére.
  3. A kivonás segítségével az adatszerkezetekben a keresés gyorsabbá vált.
  4. A hash-funkciók alapvető szerepet játszanak az adatbiztonságban, mivel a legtöbb biztonsági algoritmus és protokoll használja a kivonatolást.
  5. A Hashing az adatokat rövidebb rögzített hosszúságú értékké vagy kulcsmá alakítja, amely az eredeti karakterláncot képviseli, amelyet a hálózaton keresztül lehet elküldeni.

A hashizálás hátrányai

Az előnyeken kívül a kivágásra van néhány korlátozás:

  1. A hashizálás nem valósítható meg az adatok rendezéséhez.
  2. A hash ütközést gyakorlatilag nem lehet elkerülni, ami viszont hatékonysághoz vezet.

Ajánlott cikkek

Ez egy útmutató a Hashing-funkcióhoz Java-ban. Itt tárgyaljuk a hash-funkció alkalmazását, valamint az előnyeit és hátrányait. A következő cikkeket is megnézheti további információkért -

  1. A VB.Net nyilatkozata és inicializálása
  2. Java program a HashMap és a TreeMap megjelenítésére
  3. A hashing típusai a DBMS-ben
  4. A szteganográfia technikái
  5. Tömbök a Java programozásban
  6. Hasperemtérkép a Java-ban