Apa itu Hashing dan kegunaannya dalam teknologi terkini

Apa itu Hashing dan kegunaannya dalam teknologi terkini
Apa itu Hashing dan kegunaannya dalam teknologi terkini

Di Googling - Dewasa ini, pada dasarnya fungsi hash sangat berguna dan banyak sekali dipakai dalam kehidupan seharihari. Hashing adalah teknik yang digunakan untuk mengubah serangkaian string tertentu menjadi nilai lain. Nilai ini adalah kode dengan panjang tetap yang digunakan untuk mewakili kata atau  sesuatu yang mewakili kunci dan memudahkan untuk menemukan atau memverifikasi string asli.

Contoh dasar dari ini yang telah kita semua gunakan adalah tabel Hash dalam subjek Struktur Data kita. Seperti yang kita semua tahu, bahkan tabel hash menyimpan nilai sebagai pasangan nilai kunci. Namun, properti terpenting dari tabel hash adalah bahwa setiap kunci harus unik.

Untuk mengonversi string karakter, kami menggunakan Fungsi Hash yang bekerja pada algoritma hashing dan menghasilkan nilai baru yang kami sebut nilai hash, hash atau disebut juga intisari. Salah satu properti penting dari fungsi hash adalah jika kita meng-hash string karakter yang unik, kita selalu mendapatkan hash yang sama.

Selalu ada kebutuhan untuk algoritma hash yang baik yang tidak memungkinkan konversi hash kembali ke nilai aslinya, sehingga kebutuhan akan algoritma hash satu arah muncul.

Tabrakan di Hashing

        Hashing adalah hal yang sangat penting. Seperti yang telah kita bahas, ini adalah algoritma satu arah. Tetapi masalah bisa muncul jika dua kunci berbeda menghasilkan hash yang sama. Ini disebut tumpukan. Dengan demikian, fungsi hash yang baik adalah yang memiliki risiko yang sangat rendah untuk menghasilkan tabrakan.
Tabrakan di Hashing

Beberapa algoritma hashing yang populer adalah:

  1. MD5 adalah singkatan dari Message-Digest algorithm 5. Itu adalah algoritma yang sangat populer dan banyak digunakan yang didirikan pada tahun 1991 tetapi kemudian ditemukan tidak aman karena tabrakan yang dihasilkan bahkan pada komputer biasa.
  2. SHA-1 adalah singkatan dari Secure Hash Algorithm 1, dan dirancang pada tahun 1995. Ini menghasilkan hash 160-bit (20-byte). Algoritma ini kemudian ditemukan tidak aman terhadap penyerang yang didanai dengan baik yang telah mendapat akses ke Cloud-Computing. Pada tahun 2017, peneliti keamanan membuktikan tabrakan praktis terhadap SHA-1 dengan menghasilkan dua file PDF berbeda yang memiliki tanda tangan SHA-1 yang sama.
  3. SHA-2 adalah singkatan dari Secure Hash Algorithm 2. Ini menghasilkan hash 224-bit. Algoritma ini rumit, tetapi masih dianggap aman.
  4. SHA-3 adalah singkatan dari Secure Hash Algorithm 2. Ini adalah penerus dari SHA-2.

Hashing vs Enkripsi

        Hashing adalah fungsi satu arah sementara Enkripsi bekerja dua arah.

Hashing vs Enkripsi

Algoritma enkripsi mengambil input dan kunci rahasia dan menghasilkan output acak, yang disebut ciphertext. Tetapi yang penting adalah bahwa operasi ini dapat dibalik. Itu berarti jika ada peretas yang mendapatkan kunci rahasia, ia dapat mendekripsi ciphertext dan mendapatkan input aslinya.

Hashing selalu lebih disukai karena bahkan dalam kasus, penyerang/peretas tidak akan mendapatkan akses ke teks biasa atau kata sandi, tetapi mereka akan mendapatkan hash yang tidak berguna bagi mereka.

Penerapan Hashing

1. Verifikasi kata sandi

        Mari kita pahami ini dengan sebuah contoh, Kita semua menggunakan G-mail. Jadi, kita akan tahu kapan kita lupa kata sandi kita. G-mail memberi kami pilihan untuk mereset kata sandi kami dengan mengirimkan tautan setel ulang kata sandi ke email pemulihan kami, tetapi itu tidak pernah memberi tahu kami kata sandi kami. Pernahkah Anda bertanya-tanya mengapa?

Alasannya adalah karena G-mail menggunakan hashing. Jadi pada dasarnya, G-mail tidak menyimpan kata sandi kita tetapi menyimpan hash kata sandi kita, dan seperti yang baru saja kita diskusikan, hash tidak pernah diubah kembali ke nilai aslinya, jadi ia mengirimi kita tautan untuk mereset kata sandi tetapi tidak memberi tahu kami kata sandi yang terlupakan.

Sekarang, kita akan bertanya-tanya apakah itu tidak menyimpan kata sandi kita, bagaimana cara memvalidasi kita selama login?

Jadi, setiap kali kami mencoba masuk, kata sandi yang kami masukkan diteruskan ke fungsi hash, yang menghasilkan hash dan kemudian hash ini diverifikasi terhadap hash yang disimpan dalam database. Jika kedua hash cocok, login Anda berhasil, jika tidak, Anda akan mendapatkan pesan yang mengatakan "Kata Sandi yang Dimasukkan tidak valid".

 2. HashMap

      Kita semua tahu HashMap, tetapi mari kita lihat cara kerjanya secara internal. Properti paling penting dari HashMap adalah bahwa setiap kunci di HashMap harus unik.

HashMap adalah bagian dari Java Collection Framework dan menyimpan data dalam bentuk pasangan nilai kunci. HashMap secara internal berisi array node, dan node di sini direpresentasikan sebagai kelas. Jadi, anggota data simpul adalah:

Put() metode di HashMap:
        Jadi, di sini, misalkan saya memiliki tiga nilai seperti yang terlihat pada gambar.

Penerapan Hashing

adi, jika kita memanggil metode put() untuk string "Tanishq," pertama-tama akan menghitung nilai hash untuk string, dengan asumsi hash adalah 2657680. Sekarang, seperti yang kita lihat, HashMap adalah array node, jadi untuk menyimpan pasangan kunci dan nilai di HashMap kita perlu menghitung indeks. Jadi, rumus untuk menghitung indeks adalah:

Indeks = Kode hash(Kunci) & (n-1)
Di sini n mewakili ukuran array. Umumnya, n adalah 16.
Jadi, di sini indeksnya adalah 2657680 & 15 = 4.
Sekarang kita simpan simpul ini di indeks 4.

Penerapan Hashing

Asumsikan kami menghitung hash untuk string "Devanshu" dan itu adalah 63281940, dan kami menghitung indeks sebagai:

Indeks = 63281940 & 15=4

Jadi, kami telah menghitung indeks yang sama karena String Tanishq disimpan di indeks 4, jadi di sini kami akan menggunakan metode equals() dari HashMap dan memeriksa apakah kunci yang sudah disimpan di indeks itu sama dengan kunci yang indeksnya dihitung. Jika ternyata sama, maka kita ganti nilainya dengan nilai saat ini, kalau tidak kita hubungkan node ini ke node sebelumnya menggunakan linked list.

Jadi, inilah gambar setelah memasukkan string kedua ke HashMap.

Penerapan Hashing

Demikian pula, ketika kita menempatkan String "Yash" di HashMap, hash akan dihitung misalnya, anggaplah 2349873. Kemudian kita akan menghitung indeks sebagai

Indeks = 2349873 & 15 = 1

Jadi, kita akan menempatkan string "Yash" pada indeks 1 seperti yang terlihat pada gambar.

Penerapan Hashing

Get() metode di HashMap:
        Saat kita memanggil metode get() di HashMap dan meneruskan kuncinya, metode tersebut akan menghitung hash terlebih dahulu. kita bahas sebelumnya di blog, string yang unik selalu menghasilkan hash yang sama. Jadi di sini, setelah menghitung hash, kita menghitung indeks dengan rumus yang telah kita lihat di atas.

Jadi, di sini, jika kita menulis

Penerapan Hashing

Jadi, itu akan menghitung hash. Itu akan menjadi 63281940. Kemudian kita akan menghitung indeks dengan rumus indeks. Indeks akan menjadi:

Indeks = 63281940 & 14 = 4

Setelah menghitung indeks, kita akan pergi ke indeks 4 dan memeriksa apakah ada node di indeks 4. Ini dia. Jadi, kami akan memeriksa kunci dari simpul pertama di indeks 4, yaitu “Tanishq.” HashMap akan menggunakan metode equals() untuk melihat apakah kedua kunci sama. Dalam hal ini, string "Devanshu" dan "Tanishq" tidak sama, sehingga akan memeriksa apakah elemen berikutnya ada, dan jika tidak, itu akan mengembalikan nol. Tetapi, karena elemen berikutnya ada, ia akan memeriksa apakah kunci ke elemen berikutnya sama dengan kunci yang diteruskan dalam pemanggilan metode, dan sekarang kedua string cocok, sehingga mengembalikan nilai elemen itu.

Jadi, ini adalah cara kerja internal HashMap, dan seperti yang kita lihat di sini, Hashing memainkan peran yang sangat penting.

3. Sistem Manajemen Basis Data

        Ketika database tumbuh besar, mengambil data menjadi tugas yang memakan waktu, membuatnya tidak efisien untuk mencari semua indeks, yang meningkatkan latensi. Kami menggunakan hashing untuk memecahkan masalah ini. Tanpa menggunakan indeks, teknik hashing digunakan untuk secara langsung menghitung alamat dari record yang dibutuhkan.

Fungsi hash dapat menggunakan salah satu nilai kolom dalam teknik ini, tetapi kunci utama biasanya digunakan untuk menghasilkan alamat blok data tertentu.
Ini terdiri dari tiga komponen utama:

  1. Data Bucket: Ini adalah lokasi memori tempat data disimpan.
  2. Fungsi Hash: Fungsi Hash adalah fungsi pemetaan yang membantu kita memetakan semua rangkaian kunci pencarian ke alamat sebenarnya.
  3. Indeks Hash: Awalan nilai hash yang dihasilkan diambil sebagai Indeks Hash.

Jenis Hashing di DBMS:

  1. Static Hashing: Dalam Static hashing ketika kunci pencarian disediakan, di sini selalu alamat yang dihitung.
  2. Hashing Dinamis: Hashing dinamis memiliki keunggulan dibandingkan hashing Statis, hashing statis dapat berkembang atau menyusut secara dinamis. Ini juga disebut Hashing yang Diperpanjang

Akibatnya, hashing sangat penting untuk menangani data dalam jumlah besar dan mengambilnya dengan cepat.

4. Blockchain

        Pondasi cryptocurrency dimulai dengan munculnya teknologi blockchain. Kita semua tahu bahwa "Blockchain" adalah kata kunci, tetapi berapa banyak dari kita yang tahu cara kerjanya?

Jadi, mari kita lihat ini. Di blockchain, kami menggunakan SHA-256 (Secure Hashing Algorithm 256). Ini adalah salah satu rasa SHA2, didirikan pada tahun 2001 oleh Badan Keamanan Nasional. Untuk input yang diberikan, ini memberikan hash output 256 bit (64 karakter hex). Empat karakter pertama hash yang dihasilkan memainkan peran penting dalam menentukan apakah itu blok yang valid atau tidak.

Menambang di Blockchain
        Jadi, setiap kali penambang mencoba membuat blok baru, itu ditambahkan ke blockchain bitcoin. Sebuah blok terdiri dari nomor blok, data, nilai hash yang dihasilkan, nilai hash blok sebelumnya, dan Nonce (Nomor yang digunakan sekali). Jadi, setiap kali kita ingin membuat blok baru, kita memasukkan data dan Nonce dan kemudian hash dihasilkan. Jika empat digit utama hash adalah 0, maka blok itu valid, jika tidak, itu tidak valid, dan kita perlu membuat perubahan di Nonce. Nonce pada dasarnya adalah angka acak yang digunakan untuk membuat blok valid. Seorang penambang biasanya memulai dengan nilai Nonce dan menambahnya satu sampai dia menemukan bloknya valid. Jadi, seperti yang kita semua pikirkan, dibutuhkan beberapa iterasi untuk membuat blok valid. Setelah blok berhasil ditambang, itu ditambahkan ke blok terakhir dalam rantai.

Dengan demikian, blok-blok ini selalu dirantai bersama, dan ini membuatnya tidak dapat diubah. Blockchain ini tersedia secara global.

Blockchain

       Itulah tadi pembahasan singkat mengenai Apa itu Hashing dan kegunaannya dalam teknologi terkini. Semoga ulasan digoogling.com ini dapat bermanfaat bagi kita semua, jika ada kesalahan kata atau sebagainya moho mohon maaf. Trimakasih....!