Selain menggunakan operator XOR, kita bisa menggunakan bitwise operator pergeseran bit dengan Shift Left dan Shift Right untuk melakukan enkripsi berbasis bit dan byte. Pada bahasa C, C++ dan Java, operator Shift Left adalah tanda << dan operator Shift Right adalah tanda >>.
Operasi shift saja tidak cukup untuk digunakan pada enkripsi byte, coba anda perhatikan ketika angka 8 digeser 4 bit ke kanan atau digeser 5 bit ke kanan. Bit yang bernilai 1 akan hilang karena telah melampaui batas kanan atau LSB (Low Significant Bit). Ketika digeser melampaui batas kanan/LSB, seharusnya bit berpindah/muncul dari arah batas kiri/MSB (Most Significant Bit) seperti ditunjukan pada operasi di bawah ini. Operasi tersebut disebut Rotate atau berputar.
Untuk meng-enkripsi, gunakan rotate right atau left dan untuk mengembalikan, anda harus mer-otate dengan arah yang berlawanan, sebanyak jumlah pergeseran yang anda tentukan.
Gambar: Hasil running enkripsi Rotate |
Untuk mengoperasikan enkripsi byte dengan shift dan rotate, anda harus memperhatikan tipe data atau ukuran bit yang anda gunakan. Suatu tipe data menentukan lebar bit dan maksimal panjang pergeseran. Jika suatu karakter ASCII yang ukurannya adalah 1 byte = 8 bit, jangan melakukan pergeseran sebanyak 8, karena hasil pergeseran (cipher) akan sama dengan plain char-nya. Sama seperti anda mengelilingi stadion 360 derajat, pasti akan kembali ke posisi semula kan?
Tidak ada komentar:
Posting Komentar