Rabu, 19 Agustus 2026

POINTER

 

Praktikum Chapter I

POINTER

 

1.1  Pengertian Pointer

 

             Pointer adalah tipe data berukuran 32 bit yang merupakan suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu. Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau null jika tidak berisi data. Sebagai contoh, sebuah variabel P bertipe pointer bernilai 0x0041FF2A, berarti P menunjuk pada alamat memori 0041FF2A. Pointer dideklarasikan seperti variabel biasa dengan menambahkan tanda * (asterik) yang mengawali nama variabel.

 

Bentuk Umum:

         <tipe data> *namaVariabel;

Contoh:

         float *value;

 

Statement di atas mendeklarasikan variabel px yang merupakan pointer. Penyebutan tipe data float berarti bahwa alamat memori yang ditunjuk oleh px dimaksudkan untuk berisi data bertipe float.


1.2  Perbedaan Pointer dengan Varibel biasa

 

Variabel Biasa

Pointer

Berisi data / nilai

Berisi alamat dari suatu varibel tertentu

Operasi yang bisa dilakukan :-operasi aritmatik(+,-,*,/,%)

-operator assignmemt standart (+=,-=,*=,/=,%=)

-operator rasional ( <,>,<=,>=,==,!=)

-operator logikal(&&,||,!)

Membutuhkan operator khusus : “&” yang menunjuk alamat dari suatu variabel tertentu. Operator “&” hanya dapat dilakukan kepada variabel dan akan menghasilkan alamat dari variabel itu.

Contoh : x = &value;

 

yang kedua : operator “*”, Operator ini bersifat menggunakan/membaca nilai dari alamat variabel yang ditunjuk oleh pointer tersebut.

Contoh:int *value;

Bersifat statis

Bersifat dinamis

Deklarasi : int value;

Deklarasi : int *value;

 

 

 

   1.3       Operator Pointer

 

Operator &

Mendapatkan nilai data dari variabel pointer

Contoh :

int *alamat;

int value = 22;

alamat = &value;

cout<<alamat;

Hasil :

 

22FF54

Operator *

Mendapatkan alamat memori dari variabel pointer

int *alamat;

int value = 22;

alamat = &value;

cout<<*alamat;

Hasil :

 

22

 

 

Contoh: Program Pointer



                 Hasil:

 

 

Contoh: Program Pointer pada Array



Hasil?


Tugas:

Buatlah program penghitung karakter dengan pointer, dimana inputan berasal dari keyboard, kemudian bagaimana jika huruf vokalnya di ganti dengan z?

 

Catatan :

·      Variabel pointer dapat dideklarasikan dengan tipe data apapun.

·      Pendeklarasian variabel pointer dengan tipe data tertentu digunakan untuk menyimpan alamat memori yang berisi data sesuai dengan tipe data yang dideklarasikan, bukan untuk berisi nilai bertipe data tertentu.

·      Tipe data digunakan sebagai lebar data untuk alokasi memori (misal char berarti lebar datanya 1 byte, dst).

·      Jika suatu variabel pointer dideklarasikan bertipe float, berarti variabel pointer tersebut hanya bisa digunakan untuk menunjuk alamat memori yang berisi nilai bertipe float juga.

 


Kamis, 07 Mei 2020

Pesan Berbasis Kriptografi dan Macam-Macam Kriptografi

Salah satu tujuan paling mendasar dari kriptografi adalah untuk memungkinkan para pihak untuk berkomunikasi. Hubungkan melalui saluran komunikasi terbuka dengan cara yang aman. Satu segera Namun pertanyaan yang muncul adalah apa yang kita maksud dengan “komunikasi yang aman”. 


Macam-Macam Kriptografi Modern

Kriptografi modern adalah suatu perbaikan yang mengacu pada kriptografi klasik. Pada kriptografi modern terdapat berbagai macam algoritma yang dimaksudkan untuk mengamankan informasi yang dikirim melalui jaringan komputer.

Algoritma kriptografi modern terdiri dari tiga bagian :

  • Algoritma Simetris
    Algoritma simetris adalah algoritma yang menggunakan kunci yang sama untuk enkripsi dan deskripsinya. Algoritma kriptografi simetris sering disebut algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci dan megharuskan pengirim dan penerima menyetujui suatu kunci tersebut. Kelebihan dari kriptografi simetris waktu proses untuk enkripsi dan deskripsi relatif cepat. Hal ini disebabkan efesiensi yang terjadi pada pembangkit kunci. Maka proses relative cepat maka algoritma ini tepat untuk digunakan pada sistem komunikasi digital secara real time seperti GSM.

    Contoh Alice ingin mengirim pesan x dengan aman menggunakan saluran umum kepada Bob. Alice menggunakan kunci xO yang sebelumnya telah disepakati Alice dan Bob. Untuk mengirim pesan e XO (x) kepada Bob, dia akan deskripsi teks kode yang diterima dengan kunci yang sama dengan yang digunakan untuk memperoleh akses ke pesan yang diterima. Begitu juga sebaliknya.

    Aplikasi dari algoritma simetris digunakan oleh beberapa algoritma dibawah ini :
    • Data Encryption Standar (DES)
    • Advance Encryption Standar (AES)
    • International Data Encryption Algoritma
    • A5
    • RC4
  • Algoritma Asimetris
    Algoritma asimetris merupakan pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan satu lagi deskripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia itu, dalam hal ini kunci rahasia, untuk melakukan pembongkaran terhadap kode yang dikirim untuknya. Contoh algoritma terkenal yang menggunakan kunci asimetris  adalah RSA (merupakan singkatan dari nama penemunya, yaitu Rivest, Shamir dan Adleman).
  • Algoritma Hibrida
    Algoritma hibrida merupakan algoritma yang memanfaatkan dua tingkatan kunci, yaitu kunci rahasia (simetri) yang disebut juga session key (kunci sesi) untuk enkripsi data dan pasangan kunci rahasia adalah kunci publik untuk pemberian tanda tangan digital serta melindungi kunci simetris.

Algoritma Kriptografi yang beroperasi dalam mode bit dapat dikelompokan menjadi dua kategori, yaitu :

  1. Cipher Aliran
    Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal, dalam hal ini rangkaian rangkaian bit dienkripsikan / dideskripsikan bit per bit. Stream Chiper atau Stream Encryption merupakan suatu teknik enkripsi data dengan cara melakukan transformasi dari tiap bit secara terpisah berdasarkan posisi tiap bit dalam aliran data yang biasanya dikendalikan menggunakan operasi XOR. Enkripsi aliran data merupakan hasil dari operasi XOR setiap bit plainteks dengan setiap bit kuncinya. Pada stream chiper bila terjadi kesalahan selama transisi maka kesalahan pada teks enkripsi penerima akan terjadi tepat ditempat kesalahan tersebut terjadi. Dalam praktek pertimbangan kesalahan yang mungkin terjadi sangatlah penting untuk penentuan teknik enkripsi yang akan digunakan.
  2. Cipher Blok (Block Cipher)
    Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya.

    Misalnya panjang blok adalah 64 bit, maka itu algoritma enkripsi memperlakukan 8 karakter setiap kali penyandian (1 karakter = 8 bit dalam pengkodean ASCII)


Rangkaian Bit


Rangkaian bit yang dipecah menjadi blok-blok bit dapat ditulis dalam sejumlah cara bergantung pada panjang blok.
Contoh: Plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi
1001 1101 0110
Setiap blok menyatakan bilangan bulat dari 0 sampai 15, yaitu 9 13 6
Bila plainteks dibagi menjadi blok-blok yang berukuran 3 bit, maka rangkaian bit di atas menjadi:
100 111 010 110
Setiap blok menyatakan bilangan bulat dari 0 sampai 7, yaitu 4 7 2 6
Bila panjang rangkaian bit tidak habis dibagi dengan ukuran blok yang ditetapkan, maka blok yang terakhir ditambah dengan bit-bit semu yang disebut padding bits.
Misalnya rangkaian bit di atas dibagi menjadi blok 5-bit menjadi
10011 10101 00010
Blok yang terakhir telah ditambahkan 3 bit 0 di bagian awal (dicetak tebal) agar ukurannya menjadi 5 bit. Padding bits dapat mengakibatkan ukuran plainteks hasil dekripsi lebih besar daripada ukuran plainteks semula.

***Cara lain untuk menyatakan rangkaian bit adalah dengan notasi heksadesimal (HEX). Rangkaian bit dibagi menjadi blok yang berukuran 4 bit dengan representasi dalam HEX adalah: 0000 = 0 0001 = 1 0010 = 2 0011 = 3
0100 = 4 0101 = 5 0011 = 6 0111 = 7
1000 = 8 1011 = 9 1010 = A 1011 = B
1100 = C 1101 = D 1101 = E 1111 = F
Misalnya, plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi
1001 1101 0110
yang dalam notasi HEX adalah 9 D 6


Operator XOR

***Operator biner yang sering digunakan dalam cipher yang yang beroperasi dalam mode bit adalah XOR atau exclusive-or.



***Notasi matematis untuk opeartor XOR adalah  (dalam Bahas C, operator XOR dilambangkan dengan ^).
***Operator XOR diperasikan pada dua bit dengan aturan sebagai berikut:
 0 = 0
 1 = 1
 0 = 1
 1 = 0
*** Operator XOR identik dengan penjumlahan modulo 2.
Misalkan ab, dan adalah peubah Boolean. Hukum-hukum yang terkait dengan operator XOR:
(i)  a=0
(ii)   (Hukum komutatif)
(iii)  ( c) = ( b (Hukum asosiatif)
***Jika dua rangkaian dioperasikan dengan XOR, maka operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua ramngkaian bit tersebut.
Contoh: 10011  11001 = 01010
yang dalam hal ini, hasilnya diperoleh sebagai berikut:
1 0 0 1 1
1 1 0 0 1 
 1 0  1 0  0 1 0 1  1
0 1 0 1 0
***Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan meng-XOR-kan plainteks (P) dengan kunci (K) menghasilkan cipherteks:
 (6.1)
Karena meng-XOR-kan nilai yang sama dua kali menghasilkan nilai semula, maka proses dekripsi menggunakan persamaan:
 (6.2)
Contoh: plainteks 01100101 (karakter ‘e’)
kunci 00110101  (karakter ‘5’)
cipherteks 01010000 (karakter ‘P’)
kunci 00110101  (karakter ‘5’)
plainteks 01100101 (karakter ‘e’)
***Program komersil yang berbasis DOS atau Macintosh menggunakan algoritma XOR sederhana ini. Sayangnya, algoritma XOR sederhana tidak aman karenacipherteksnya mudah dipecahkan.

Cara memecahkannya adalah sebagai berikut (asumsi: panjang kunci adalah sejumlah kecil byte):

***Cari panjang kunci dengan prosedur counting coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase ini disebut index of coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
***Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang kunci tersebut.Cari panjang kunci dengan prosedurcounting coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase ini disebut index of coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
***Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang kunci tersebut.

Jelaskan penjelasan aplikasi kriptografi dikolom komentar dibawah