BAB II DASAR TEORI Bab ini berisi dasar teori pendukung yang digunakan sebagai acuan dalam merealisasikan sistem. Teori – teori yang dibahas pada bab ini dibagi menjadi 2 bagian yaitu perangkat keras dan perangkat lunak. Perangkat keras membahas teori yang digunakan dalam perancangan modul e-STNK diantaranya adalah mikokontroler ATMega 2560, modul GSM/GPRS SIMCOM SIM908, modul Liquid Crystal Display (LCD) keypad, dan RFID. Perangkat lunak membahas mengenai teori yang digunakan dalam perancangan perangkat lunak, diantaranya adalah Virtual Private Server (VPS) untuk membangun aplikasi TCP server, basis data, komunikasi socket, komunikasi GPRS, dan fungsi hash MD5. 2.1. Perangkat Keras 2.1.1. Mikrokontroler ATMega2560 ATMega2560 adalah mikrokontroler keluarga AVR yang dibuat oleh Atmel Corporation. Untuk memprogram mikrokontroler ini digunakan compiler Arduino. Gambar 2.1 menunjukkan konfigurasi pin mikrokontroler ATMega2560. Beberapa fasilitas ATMega2560 yang digunakan adalah sebagai berikut : 1. 4Kbytes Internal EEPROM. 2. 8KBytes Static Random Memory (SRAM). 3. 256Kbytes Self-Programmable Flash. 4. 86 saluran input / output. 5. 4 buah Universal Asynchronus Receiver Transceiver UART Hardware. 6. Antarmuka SPI. 7. Bekerja pada frekuensi 16MHz dan memiliki kecepatan 16MIPS.
6
Gambar 2.1. Konfigurasi pin mikrokontroler ATMega 2560 [4] 2.1.2. Modul GSM/GPRS SIMCOM SIM908 SIM908 merupakan modul GSM/GPRS yang memiliki fitur – fitur sebagai berikut : a. Quad-Band 850/900/1800/1900 MHz. b. GPRS Mobile Station Class B. c. GPRS Multislot class 10 yang memiliki downlink maksimal 85.6 kbps dan uplink maksimal 42.8 kbps. d. Integrated TCP/IP Stack. e. Dikontrol dengan menggunakan ATCommand melalui komunikasi serial. f. Dua mode sms yaitu teks dan Protocol Data Unit (PDU). g. Mekanisme pengisian ulang baterai otomatis.
7
GND
GPS-ANT
GND
GND
GPS-VANT-IN
GPS-VANT-OUT
VCHG
TEMP-BAT
DTR
TXD
DCD
RI
RXD
CTS
RTS
GND
GND
VBAT
VBAT
GND
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
GND
1
60
GND
GND
2
59
GSM-ANT
PWRKEY
3
58
GND
NC
4
57
GND
GND
5
56
I2C-SDA
DISP-CLK
6
55
I2C-SCL
DISP-DATA
7
54
NC
DISP-D/C
8
53
NC
52
STATUS
51
NETLIGHT
50
PWM3
49
PWM2
13
48
PWM1
GND
14
47
ADC
GPS/DBG-TXD GPS/DBG-RXD
15
46
NC
16
45
NC
SIM-DATA
17
44
VDD-EXD
SIM-RST
18
43
GND
SIM-CLK
19
42
VRTC
SIM-VDD
20
41
GND
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
MIC1N
SPK2N
SPK2P
MIC2P
MIC2N
NC
NC
GPIO1/KBR0
GPIO2/KBR1
GPIO3/KBR2
GPIO4/KBC0
GPIO5/KBC1
GPIO6/KBC2
GND
NC
NC
GND
NC
23
12
MIC1P
11
NC
22
NC
SIM908 TOP VIEW
21
10
SPK1P
9
GND
SPK1N
DISP-CS
Gambar 2.2. Diagram konfigurasi pin SIM908 [5] Gambar 2.2 menunjukkan konfigurasi pin modul SIM908. Modul SIM908 digunakan sebagai jembatan untuk berkomunikasi dengan server melalui komunikasi GPRS menggunakan metode socket. Untuk mengontrol modul ini, digunakan library GSM Shield arduino untuk SIM900 [10]. Contoh kode komunikasinya dapat dilihat pada Kode Sumber 2.1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include "SIM900.h" #include "inetGSM.h" InetGSM inet; bool started=false, serverConnected=false; char strPaket[50], strRespon[50]; void setup() { Serial.begin(9600); if (gsm.begin(19200)) { Serial.println("GSM Connected"); started=true; } if(started) { if (inet.attachGPRS("internet", "", "")) {
8
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Serial.println("status = GPRS ATTACHED"); if(inet.connectTCPOnly("180.246.73.191",1210)) { Serial.println("Connected to server.."); serverConnected=true; } } else Serial.println("status = Server disconnected"); } else Serial.println("GSM not connected"); } void loop() { if(serverConnected) { if(inet.tcpSend(strPaket,strRespon)>0) { Serial.print(“Respon dari server = ”); Serial.println(strRespon); } else Serial.print(“TCP Connection problem..”); } }
Kode Sumber 2.1. Contoh program komunikasi metode socket pada modul SIM908 Penjelasan Kode Sumber 2.1 adalah sebagai berikut :
Baris 1 dan 2 mereferensikan library GSM shield yang digunakan.
Baris 4, 5 dan 6 merupakan deklarasi variabel yang dibutuhkan. InetGSM merupakan kelas pada library inetGSM.h yang merupakan kelas utama yang digunakan untuk melakukan komunikasi socket.
Baris 9 merupakan inisialisasi serial dengan baudrate 9600.
Baris 10 merupakan inisialisasi GSM dengan baudrate 19200. Variabel gsm merupakan variabel dari kelas SIMCOM900 yang dideklarasikan pada library SIM900.h. Kelas ini digunakan untuk menangani komunikasi jaringan GSM.
Baris 17 menunjukkan bahwa modem SIM908 sedang berusaha terkoneksi ke jaringan GPRS dengan APN (Access Point Name) “internet”.
Baris 20 menunjukkan modem SIM908 sedang melakukan komunikasi socket ke server dengan IP server 180.246.73.191 dan port 1210.
9
Baris 35 menunjukkan pengiriman dan penerimaan data dengan menggunakan komunikasi socket. Variabel strPaket merupakan paket data yang dikirimkan ke server, sedangkan variabel strRespon merupakan balasan yang diterima dari server.
2.1.3. Modul LCD Keypad LCD dan keypad menggunakan modul LCD Keypad Shield dari DFRobot. Modul ini terdiri dari sebuah LCD karakter 2x16 dan antarmuka keypad yang terdiri atas 6 buah push button. LCD karakter tersebut mendukung 4 bit mode data dan digunakan untuk menampilkan menu serta informasi dari berbagai proses yang dilakukan oleh modul e-STNK. Untuk mengakses modul ini, digunakan library LiquidCrystal pada arduino. Contoh penggunaan modul ini dapat dilihat pada Kode Sumber 2.2. 1 2 3 4 5 6 7 8 9 10 11
#include "LiquidCrystal.h" LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup() { lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0); lcd.print(“E-STNK SYSTEM”); }
Kode Sumber 2.2. Contoh program penggunaan modul LCD Penjelasan Kode Sumber 2.2 adalah sebagai berikut :
Baris 1 mereferensikan library LiquidCrystal yang digunakan.
Baris 2 merupakan deklarasi variabel LiquidCrystal.
Baris 7 merupakan inisialisasi LCD.
Baris 8 melakukan clear pada LCD.
Baris 9 memindahkan cursor LCD ke posisi (0,0).
Baris 10 menuliskan “E-STNK SYSTEM” pada LCD dimulai dari koordinat (0,0).
2.1.4. RFID RFID atau Radio Frequency Identification adalah sebuah metode identifikasi terhadap suatu obyek melalui data yang ditransmisikan melalui 10
frekuensi radio. Sistem tersebut minimal memerlukan sebuah tag (yang berfungsi sebagai transponder), sebuah reader (yang berfungsi sebagai interrogator), dan sebuah antenna (yang berfungsi sebagai coupling device). Reader biasanya terhubung dengan dengan sebuah host computer atau perangkat lainnya yang memiliki kecerdasan untuk memproses lebih lanjut tag data dan memutuskan untuk mengambil suatu tindakan. Salah satu elemen penting pada RFID adalah data transfer. Data transfer terjadi ketika terjadi hubungan antara sebuah tag dengan sebuah reader, yang dikenal dengan coupling, melalui antena baik yang terpasang pada tag tersebut maupun pada reader seperti yang diilustrasikan pada Gambar 2.3.
Gambar 2.3. Hubungan antara tag, reader dan antena RFID [6] Elemen penting lainnya dalam sistem RFID adalah frekuensi untuk operasi antara tag dan reader. Pemilihan suatu frekuensi didorong oleh kebutuhan aplikasi seperti kecepatan, akurasi dan kondisi-kondisi lingkungan, yang mungkin melibatkan juga regulasi dan standar yang mengatur suatu aplikasi. Adapun frekuensi-frekuensi yang biasa digunakan pada RFID adalah sebagai berikut :
Low Frequency (LF): kurang dari 135KHz
High Frequency (HF): pada 13.56 MHz
Ultra High Frequency (UHF) antara 433 MHz s/d 860 to 930 MHz
Microwave pada 2.45 GHz dan 5.8 GHz Modul RFID MFRC522 yang digunakan bekerja pada frekuensi 13.56
MHz sehingga sudah mendukung untuk baca tulis data. Memiliki jarak pembacaan kartu tag maksimum 5 cm dari antena. Kartu tag yang adalah mifare ISO 14443A dengan kapasitas 1KB. Modul ini berkomunikasi dengan mikrokontroler dengan menggunakan komunikasi SPI. Untuk mengontrol RFID MFRC522 digunakan library RFID arduino [11]. Contoh penggunaan modul ini dapat dilihat pada Kode Sumber 2.3. 11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#include <SPI.h> unsigned char flag; unsigned char serNum[5]; unsigned char strData[32]; char serial[20]; char data[32]; void setup() { Serial.begin(9600); SPI.begin(); MFRC522_Init(); } void loop() { flag=0; while(1) { ReadRFID_Data(); if(flag==1)break; } sprintf(serial,"%i%i%i%i%i",serNum[0],serNum[1], serNum[2],serNum[3],serNum[4]); for(int i=0;i<32;i++) strData[i]=(strHash[i]); Serial.print(“Nomor serial kartu = “); Serial.println(serial); Serial.print(“Data pada kartu = “); Serial.println(strData); }
Kode Sumber 2.3. Contoh program pembacaan data pada modul RFID MFRC522 Penjelasan Kode Sumber 2.3 adalah sebagai berikut :
Baris 1 mereferensikan library SPI yang dibutuhkan untuk mengakses modul RFID.
Baris 3 sampai 7 mendeklarasikan variabel – variabel yang dibutuhkan.
Baris 11 menginisialisasi serial dengan baudrate 9600.
Baris 12 menginisialisasi SPI.
Baris 13 adalah fungsi untuk menginisialisasi modul RFID.
Baris 18 mereset nilai flag menjadi 0.
Baris 19 memulai perulangan tak berhingga untuk melakukan pembacaan data. Hal ini dilakukan karena modul RFID menunggu user untuk mendekatkan kartu tag. 12
Baris 21 adalah fungsi untuk membaca data pada kartu tag yang didekatkan. Jika data berhasil dibaca, didalam fungsi tersebut akan menyimpan nomor serial kartu pada variabel serNum dan data yang tersimpan di dalam kartu pada variabel strData serta mengubah nilai flag menjadi 1 tanda bahwa pembacaan data berhasil dilakukan.
Baris 22 melakukan pengecekan terhadap variabel flag, bila pembacaan data berhasil dilakukan, maka akan break dari perulangan tak berhingga.
Baris 24 sampai 26 melakukan konversi nomor serial kartu dan data kartu tag dari tipe data unsigned char menjadi char.
Baris 27 sampai 30 menampilkan data yang dibaca pada serial.
2.2. Perangkat Lunak 2.2.1. Virtual Private Server Virtual Private Server (VPS) adalah mesin virtual yang disediakan oleh perusahaan yang menawarkan jasa internet hosting. VPS berjalan di atas sebuah software yang terdapat pada sebuah komputer fisik yang sama dengan pelanggan lain. VPS bekerja layaknya sebuah komputer fisik dan dapat diatur berdasarkan kebutuhan masing-masing penggunanya. Pada model server virtual, software virtualization menciptakan lebih dari satu komputer virtual yang memiliki harddisk, memori dan kartu jaringan yang terpisah kepada beberapa user walaupun berasal dari sebuah komputer fisik yang sama, tetapi melalui software virtualization ini server virtual dari masing-masing user memiliki tingkat security yang lebih tinggi dan terpisah dari virtual server yang lain. Masing masing server virtual dapat menjalankan sendiri sistem operasi yang disesuaikan dengan kebutuhan user dan dapat secara indepen untuk dijalankan ulang (reboot). Aplikasi TCP server yang dijalankan di VPS bertugas untuk menerima dan mengolah paket data dari modul e-STNK serta memberikan balasan dari request yang diminta. Selain aplikasi TCP server, basis data juga dipasang pada VPS ini sehingga mempercepat dalam proses transaksi data.
13
2.2.2. Basis Data Basis data merupakan sekumpulan data berisi informasi yang terdapat dalam tabel yang saling berhubungan. Sedangkan tabel merupakan sekumpulan entity data yang masing – masing berisi informasi. Pengolahan data dan perancangan basis data yang tepat akan menghasilkan informasi yang berguna, memiliki integritas data yang tinggi serta memudahkan dalam proses pencarian data. Standar bahasa yang digunakan untuk mengakses dan melakukan manipulasi data dalam sistem basis data adalah SQL (Structured Query Language). SQL dieksekusi pada Database Management System (DBMS). SQL ini dipakai oleh berbagai macam DBMS seperti Microsoft Access, MySQL Server, DB2, Informix, Microsoft SQL Server, Oracle, dan lain – lain. Pada skripsi ini digunakan Microsoft SQL Server sebagai basis data server. Tabel 2.1 menunjukkan ringkasan beberapa daftar sintaks – sintaks yang umum digunakan dalam pengaksesan atau manipulasi basis data. Tabel 2.1. Sintaks SQL yang digunakan (bersambung) STATEMENT KEGUNAAN SINTAKS INSERT INTO Memasukkan data- INSERT INTO Mahasiswa(NIM, data ke dalam kolom- Nama, AlamatAsal, TempatLahir, TanggalLahir, kolom suatu tabel
SELECT UPDATE
AlamatTinggal, NoTelepon, Fak_Key, Angkatan, Keterangan) VALUES(@NIM, @Nama, @AlamatAsal, @TempatLahir, @TanggalLahir, @AlamatTinggal, @NoTelepon, @Fak_Key, @Angkatan, @Keterangan) data SELECT * FROM Mahasiswa
Menampilkan kolom tertentu Memperbaharui data
14
UPDATE Mahasiswa SET NIM=@NIM, Nama=@Nama, AlamatAsal=@AlamatAsal, TempatLahir=@TempatLahir, TanggalLahir=@TanggalLahir, AlamatTinggal=@AlamatTinggal, NoTelepon=@NoTelepon, Fak_Key=@Fak_Key, Angkatan=@Angkatan, Keterangan=@Keterangan WHERE Mahasiswa_Key=@Key
Tabel 2.1. Sintaks SQL yang digunakan (lanjutan) STATEMENT KEGUNAAN DELETE Menghapus barisFROM baris tertentu pada tabel sesuai kondisi yang disyaratkan AS Memberikan nama alias untuk tabel WHERE
SELECT A.*, B.Fak_Nama, B.Fak_Kode FROM Mahasiswa A, Fakultas B WHERE A.Fak_Key=B.Fak_Key Memfilter akses atau SELECT * manipulasi data FROM Mahasiswa berdasar kondisi WHERE Mahasiswa_Key=@Key
tertentu Memfilter akses atau manipulasi data berdasar kondisikonsisi tertentu
AND
ORDER BY
Menciptakan suatu acuan urutan pada kolom tertentu
BETWEEN
Memfilter akses atau manipulasi data dengan suatu batasan nilai Membuat suatu pengelompokan tampilan berdasar kolom tertentu
GROUP BY
SINTAKS DELETE FROM Mahasiswa WHERE Mahasiswa_Key=@Key
SELECT A.*, B.Fak_Nama, B.Fak_Kode FROM Mahasiswa A, Fakultas B WHERE A.Fak_Key=B.Fak_Key AND A.Mahasiswa_Key=@Key SELECT A.*, B.Fak_Nama, B.Fak_Kode FROM Mahasiswa A, Fakultas B WHERE A.Fak_Key=B.Fak_Key ORDER BY Fak_Kode, NIM, Nama SELECT * FROM ParkirOut WHERE Tanggal BETWEEN @tanggalAwal AND @tanggalAkhir SELECT COUNT(STNK_Key) AS JUMLAH, TANGGAL FROM ParkirOut WHERE year(Tanggal)=@tahun AND month(Tanggal)=@bulan GROUP BY Tanggal
Pada Microsoft SQL Server, terdapat fitur replikasi yang memungkinkan basis data pada sebuah server dapat disinkronisasi dengan basis data pada server fisik yang lain. Fitur ini dimanfaatkan untuk membangun basis data pada server cadangan, sehingga ketika server utama mengalami gangguan dan tidak dapat online, maka server cadangan akan menggantikan fungsi dari server utama serta melakukan replikasi data yang masuk ke database server cadangan. Hal ini dimaksudkan agar ketika server utama bisa kembali online, basis data pada server cadangan segera melakukan sinkronisasi agar data pada server utama kembali utuh. Untuk melakukan replikasi, server utama dan server cadangan harus berada 15
pada jaringan yang sama. Oleh karena itu dibuat sebuah jaringan Virtual Private Network (VPN) sehingga kedua server dapat berada dalam satu jaringan yang sama. Terdapat empat komponen penting dalam melakukan replikasi basis data yaitu [12]:
Publisher, merupakan basis data yang akan di replikasi setiap kali terjadi perubahan data.
Subscriber, merupakan basis data yang menjadi target replikasi dari publisher.
Distribution database, merupakan basis data yang didalamnya terdapat semua perintah – perintah replikasi. Setiap kali terjadi perubahan data pada publisher, SQL Server membuat perintah – perintah replikasi pada distribution database yang kemudian akan dilanjutkan ke subscriber.
Articles, merupakan tabel pada publisher yang akan direplikasi.
Gambar 2.4. Prinsip kerja dari transactional replication [13] Gambar 2.4 menunjukkan prinsip kerja dari transactional replication. Dapat dilihat bahwa terdapat dua buah SQL Agent yang bekerja pada replikasi ini, 16
yaitu Log Reader Agent yang membaca log perubahan data pada publisher lalu mengirimkannya ke distribution database. Agen yang kedua adalah Distribution Agent yang akan meneruskan log tersebut ke subscriber.
2.2.3. Komunikasi Socket Socket merupakan mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses, baik dalam satu mesin maupun antar mesin melalui jaringan berbasis TCP/IP. Beberapa contoh aplikasinya adalah fasilitas- fasilitas yang disediakan oleh mesin unix seperti telnet, rlogin, ssh, ftp, dan lain lain yang menggunakan socket sebagai sarana komunikasi mereka. Komunikasi socket diciptakan terutama untuk menjembatani komunikasi antara dua buah program yang dijalankan pada mesin yang berbeda. Pemrograman socket merupakan salah satu jenis pemrograman jaringan komputer yang memiliki model client-server dan menggunakan socket sebagai cara untuk pertukaran datanya. Untuk menciptakan sebuah komunikasi diantara dua node, salah satu node harus memulai lebih dulu dan node yang lain harus menunggu. Dalam pemrograman jaringan komputer node yang bertugas untuk membangun koneksi disebut dengan client sedangkan node yang menunggu adanya komunikasi yang masuk disebut server. Pola desain dasar untuk aplikasi client-server berbasis komunikasi socket digambarkan pada Gambar 2.5.
Gambar 2.5. Pola desain dasar komunikasi socket [8] 17
Penggunaan komunikasi socket berfungsi sebagai jembatan komunikasi antara modul e-STNK dengan aplikasi TCP server pada komputer server. Komputer server memiliki public IP serta port 1210 yang dibuka sehingga SIM908 pada modul e-STNK dapat membangun komunikasi socket dengan alamat public IP dan port tersebut. Komunikasi socket ini juga dipilih karena dapat melewatkan data berupa string, sehingga memudahkan pemrosesan paket data.
2.2.4. Komunikasi GPRS General Packet Radio Service (GPRS) merupakan sebuah layanan paket data pada jaringan mobile GSM. GPRS dikembangkan untuk memenuhi tuntutan perkembangan pesat dari jumlah pemakai internet. Keuntungan dari GPRS adalah layanan ini menyediakan layanan data menggunakan jaringan radio GSM, sehingga operator GSM dapat menerapkan layanan ini tanpa mengubah keseluruhan infrastruktur. Selain itu, GPRS juga memungkinkan operator jaringan untuk menerapkan arsitektur jaringan berbasis IP untuk aplikasi data mobile secara wireless. GPRS dapat dikelompokkan menjadi 3 kelas yang memiliki kemampuan yang berbeda :
Class A, perangkat mobile dapat melakukan / menerima panggilan secara simultan pada jaringan GSM dan GPRS.
Class B, perangkat mobile dapat melakukan / menerima panggilan pada jaringan GSM atau GPRS, tetapi tidak simultan.
Class C, perangkat mobile dapat bekerja pada jaringan GPRS atau GSM yang dipilih secara manual.
GPRS diimplementasikan pada modul e-STNK agar dapat berkomunikasi dengan server menggunakan metode socket.
2.2.5. Fungsi Hash MD5 Hash merupakan salah satu algoritma kriptografis satu arah yang digunakan untuk mengubah suatu plaintext (teks jelas) menjadi chipertext (teks yang tersandi) [14]. Salah satu algoritma hash yang umum digunakan adalah MD5 dimana algoritma ini mengubah sebuah teks jelas ke teks yang jumlahnya tetap. MD5 menghasilkan 128 bit nilai hash dan direpresentasikan ke dalam 18
heksadesimal sepanjang 32. Pada hash MD5, suatu teks yang telah di-hash dapat di-dehash dengan precomputed table yaitu tabel yang berisi hasil hash dari banyak teks yang telah di hash sebelumnya. Selain itu proses dehash juga dilakukan dengan melakukan brute force atau dictionary attack. Oleh karena itu, fungsi hash MD5 yang digunakan diperkuat dengan menggunakan salt, yaitu byte acak yang ditambahkan ke plaintext sebagai tambahan input yang menyebabkan nilai hash akan berubah jauh dari hash sebelumnya tanpa salt. Fungsi hash MD5 ini diterapkan pada aplikasi server untuk mengubah nilai nomor polisi kendaraan yang akan disimpan di kartu tag, serta untuk melakukan verifikasi kartu tag tersebut. Untuk itu, dibuat sebuah class SimpleHash yang memanfaatkan
library
System.Security.Cryptography
pada
.Net
framework. Contoh penggunaan class SimpleHash yang dibangun dapat dilihat pada Kode Sumber 2.4. 1 2 3 4 5 6 7 8 9 10 11 12 13 14
string ComputeHash(string PlainText) { string result = SimpleHash.ComputeHash(PlainText, “MD5”); return result; } bool VerifyHash(string PlainText, string HashValue) { bool verify = SimpleHash.VerifyHash(PlainText, “MD5”, HashValue); return verify; }
Kode Sumber 2.4. Contoh program penggunaan class SimpleHash Penjelasan Kode Sumber 2.4 adalah sebagai berikut :
Fungsi ComputeHash pada baris 1 sampai baris 6 merupakan fungsi yang akan mengubah plaintext menjadi nilai hash MD5 yang telah dimodifikasi dengan penyisipan salt. Fungsi ini memberikan kembalian berupa string.
Fungsi VerifyHash pada baris 8 sampai baris 13 merupakan fungsi yang digunakan untuk melakukan verifikasi apakah nilai hash yang dicek itu valid atau tidak. Fungsi ini akan memberikan kembalian berupa boolean “True” jika nilai hash valid, dan “False” jika nilai hash tidak valid. 19