Minggu, 06 Desember 2009

ARTIKEL KEAMANAN DATA INFORMASI DIGITAL


By : Ricky H. Arsyad

Perkembangan dunia teknologi informasi pada saat ini semakin meningkat dan telah merambah ke berbagai sektor kehidupan. Kebutuhan akan informasi yang cepat dan akurat sangat diperlukan di era digital ini, terlebih bagian dari teknologi informasi tersebut yakni internet telah menjadi sebuah jaringan informasi yang telah menjadi bagian tak terpisahkan dari kehidupan masyarakat pada era digital ini. Data informasi yang diperlukan oleh masyarakat dapat di akses secara mudah dengan adanya teknologi informasi khususnya dengan adanya jaringan internet.
Tetapi dalam kenyataanya teknologi informasi yang telah memudahkan setiap orang dalam mendapatkan informasi, sangat rentan dilakukan pengambilan data informasi tanpa ada hak apapun atas data informasi tersebut oleh pihak-pihak yang tidak bertanggung jawab. Oleh karenanya keamanan data informasi sangat diperlukan untuk melindungi data informasi tersebut dari pihak-pihak yang tidak berhak. Salah satu metode keamanan untuk melindungi data informasi tersebut digunakan teknik pengacakan data informasi yang disebut enkripsi, metode tersebut digunakan untuk membuat data informasi agar tidak dapat di baca atau di mengerti kecuali oleh penerima yang berhak akan data informasi tersebut.
Metode-metode enkripsi yang digunakan dalam keamanan data informasi sangat banyak, seperti RC4, Blowfish, AES, DEST, RSA, GHOST, SCOP, Idea dll. Dan dalam penerapan metode enkripsi tersebut dibagi menjadi 2 jenis yakni, enkripsi simetrik dan enkripsi asimetrik. Enkripsi simetrik menggunakan kunci yang sama dalam proses enkripsi datanya ataupun dalam deskripsi datanya, contoh enkripsi simetrik yaitu RC4, Blowfish, AES dll, sedangkan enkripsi asimetrik yakni menggunakan kunci publik dan kunci privat untuk enkripsi dan deskripsi datanya, contoh enkripsi asimetrik RSA. Dan dari enkripsi simetrik dibagi menjadi 2 tipe yaitu Stream Cipher dan Block Cipher. Stream Cipher yakni proses mengenkripsi aliran data informasi (Stream) bit per bitnya menjadi data acak (Cipher) secara kontinyu. Sedangkan Block Cipher merupakan proses mengenkripsi data informasi per blok data menjadi data acak (Cipher).

Melihat perkembangan teknik keamanan data informasi yang menjadi sangat penting dalam dunia teknologi informasi, maka penulis mencoba membuat sebuah metode enkripsi pengamanan data informasi yang penulis beri nama dengan Algoritma PR2 (Pseudocode Ricky 2), versi update dari enkripsiPR sebelumnya. Algoritma ini merupakan algoritma enkripsi simetrik dengan tipe Stream Cipher, yang memproses aliran data informasi (Stream) secara kontinyu. Enkripsi ini relatif cepat dalam proses enkripsi dan deskripsi datanya, kecepatan rata-ratanya 18 mb/s, dengan pentium 4 2.4 Ghz, memory 512 Mb dan HDD 80 Gb. Algoritma enkripsi ini dapat diterapkan pada proses pengiriman data melalui jaringan ataupun pada proses pengolahan data lokal tanpa menggunakan media jaringan. Mudah-mudahan algoritma PR2 yang diterapkan dalam fungsi program pengamanan data, dapat menjadi sebuah metode alternatif keamanan data untuk mengamankan data informasi dari pihak-pihak yang tidak berkepentingan.

Untuk mengembangkan algoritma PR2 (versi update penulis dari enkripsiPR sebelumnya), maka penulis membuka kode program Algoritma PR2 untuk umum beserta konsep dasar mengenai algoritma PR2, untuk dikembangkan lebih lanjut dan dapat dilakukan pengujian terhadap keamanan dari algoritma ini. Kode program dari Algoritma ini dapat dikembangkan secara bebas untuk keperluan aplikasi, penelitian dan lain-lainnya. Mudah-mudahan bermanfaat khususnya di indonesia umumnya di dunia


KONSEP DASAR ALGORITMA PR2


ABSTRAKSI



Algoritma PR2 merupakan sebuah jenis metode enkripsi simetrik yakni jenis algoritma enkripsi yang menggunakan kunci (key) yang sama dalam proses enkripsi maupun deskripsinya. Algoritma ini menggunakan bentuk Stream Cipher yang mengolah data asli (plaintext) secara kontinyu sehingga menghasilkan data acak (ciphertext). Algoritma ini dapat memakai kunci sepanjang 1-256 karakter. Tahapan proses dalam algoritma ini dibagi menjadi 2 bagian yaitu proses inisialisasi kunci (key) dan proses enkripsi dan deskripsi data. Pada bagian inisialisasi kunci (key) data karakter kunci akan diubah menjadi nilai-nilai integer kemudian diproses dengan perhitungan matematika sederhana antara penambahan, pengurangan, perkalian dan pembagian modulo, dan data integer tersebut akan diproses kembali pada tahap substitusi key sehingga akan dihasilkan nilai substitusi key yang akan digunakan pada proses enkripsi dan deskripsi data. Pada proses substitusi key tersebut akan menghasilkan nilai substitusi key yang berbeda-beda pada setiap proses iterasi dalam substitusi key, jumlah iterasi tersebut didapatkan dari perhitungan awal tahap inisialisasi kunci (key). Dan apabila nilai substitusi key telah didapatkan maka proses selanjutnya adalah proses enkripsi dan deskripsi. Dalam proses enkripsi dan deskripsi ini, data input file stream yang akan dienkripsi atau dideskripsi dilakukan pemanipulasian bit pada byte-byte yang ada dalam file stream tersebut, menggunakan logika xor antara nilai per-byte yang ada dalam file stream tersebut dengan jumlah iterasi pada substitusi key sebelumnya, nilai yang nanti dihasilkan dari pemanipulasian bit dan nilai subtitusi key yang telah dihasilkan sebelumnya secara kontinyu sampai seluruh byte-byte dalam file stream tersebut berhasil dimanipulasi bit-perbitnya. Kemudian data hasil pemanipulasian bit tersebut disimpan pada output file stream sebagai hasil dari proses enkripsi dan deskripsi dari algoritma ini.

Dalam penerapannya karena algoritma ini merupakan jenis enkripsi simertrik terdapat kesulitan dalam manajemen kunci (key). Seperti contoh : Dilakukan pengiriman data yang telah di enkripsi ke seorang penerima melalui email, orang yang diberi data ini hanya dapat merubah data ke dalam bentuk aslinya dengan menggunakan kunci (key) yang sama. Jadi si pengirim harus memberitahukan ke si penerima data kunci (key) yang digunakan, disini masalahnya bagaimana mengirim kunci (key) ke penerima tersebut. Sebagai solusi alternatif mengatasi masalah tersebut, Pada proses pengiriman data terdiri dari 2 data yang dikirimkan yaitu pesan yang telah terenkripsi dan kunci pengiriman untuk penerima yang juga telah dienkripsi. Mekanisme proses enkripsinya yaitu diasumsikan pengirim dan penerima telah mempunyai kunci kesepakatan yang tetap (rahasia), karena kunci tersebut akan digunakan untuk mengenkripsi kunci enkripsi sehingga menghasilkan kunci pengiriman. Adapun langkah-langkahnya sebagai berikut :

· Tetapkan sebuah kunci rahasia antara pengirim dan penerima. Data kunci rahasia yang digunakan harus sama dengan data kunci rahasia yang digunakan pada penerima. (Apabila ada perubahan pada kunci rahasia ini harus ada kesepakatan terlebih dahulu antara pengirim data dan penerima data)

· Setelah kunci rahasia telah ditetapkan oleh pengirim dan penerima, kemudian tetapkan kunci enkripsi secara manual atau dengan program pengacak karakter untuk menghasilkan kunci pengiriman. Dan kunci enkripsi inilah yang digunakan untuk mengenkripsi pesan asli (plaintext). (Kunci enkripsi berbeda-beda untuk tiap kali pengiriman data / transaksi data agar dapat menjaga keamanan pengiriman data )

· Dengan langkah kedua di atas maka dihasilkan sebuah kunci pengiriman, yakni hasil proses enkripsi kunci enkripsi dengan kunci rahasia. Dan kunci pengiriman inilah yang akan dikirimkan ke penerima melalui jaringan atau lainnya bersama data pesan yang telah terenkripsi (Ciphertext).

· Pada tahap akhir penerima menerima data dari pengirim yang terdiri dari 2 data yakni data pesan yang telah terenkripsi (ciphertext) dan kunci pengiriman. Dan untuk memproses data-data yang telah diterima tersebut, maka langkah awalnya penerima memproses terlebih dahulu data kunci pengiriman untuk menghasilkan kunci deskripsi dengan menggunakan kunci rahasia yang telah ditetapkan sebelumnya antara pengirim dan penerima. Setelah didapatkan kunci deskripsi seperti yang telah dijelaskan di atas, maka kunci deskripsi tersebut digunakan untuk mendeskripsi pesan terenkripsi (ciphertext) yang diterima oleh penerima, sehingga dihasilkan pesan asli (plaintext) yang dapat dibaca oleh penerima.



Diharapkan dengan langkah-langkah seperti di atas dapat mengatasi dalam pengelolaan kunci (key) dan dapat menjaga keamanan data, karena kunci yang dikirimkan pada penerima bukan merupakan data kunci asli tetapi merupakan data yang telah dienkripsi oleh pengirim. Dan juga kunci yang dikirimkan kepada penerima berbeda-beda tiap kali pengiriman data sehingga dapat juga menjaga dalam keamanan pengiriman data. Algoritma ini dapat diterapkan pada penyandian pesan atau transmisi data pada jaringan telepon, wireless ataupun lainnya, karena merupakan jenis algoritma enkripsi stream cipher yang memproses data secara kontinyu dan relatif cepat dalam proses pengenkripsian pesan atau transmisi datanya.






BAB I

PENDAHULUAN



Perkembangan teknologi informasi pada saat ini semakin meningkat seiring dengan kemajuan teknologi di bidang software maupun hardware. Salah satu pilar utama perkembangan teknologi informasi yakni semakin berkembangnya jaringan internet pada saat ini. Pertukaran informasi pada jaringan internet semakin mudah dan cepat dilakukan bila dibandingkan dengan sistem pertukaran informasi secara manual. Dikarenakan jarak dan tempat tidak menjadi hambatan utama pada jaringan internet. Tetapi pada tahap implementasi pertukaran informasi pada jaringan internet ataupun media komunikasi lainnya sangat rentan terhadap keamanan data, karena data tersebut ditransmisikan melalui jaringan sehingga bukan tidak mungkin pada saat data yang dikirimkan melalui jaringan dapat disadap ataupun dikacaukan oleh pihak yang tidak berkepentingan.

Dan sebagai solusi menghadapi permasalahan di atas, maka berkembanglah suatu cabang keilmuan yang mempelajari teknik keamanan data dan informasi yang biasa disebut kriptografi. Teknik keamanan data ini dapat meminimalisasi tindakan pengambilan data atau informasi oleh orang yang tidak berkepentingan. Metode yang terdapat di dalam kriptografi salah satunya yaitu enkripsi yang merupakan sebuah metode untuk mengamankan data atau informasi dengan jalan mengubah data atau informasi asli menjadi sebuah data atau informasi yang teracak menggunakan sebuah metode penyandian data atau informasi dan menyertakan kata kunci data atau informasi di dalam metode penyandian data atau informasi tersebut, sehingga data atau informasi tersebut tidak dapat dibaca dengan mudah. Secara matematis sederhana enkripsi dapat dijelaskan sebagai berikut :

E = P >M> C

Ket : E : Enkripsi

M : Metode Penyandian Data

P : Plaintext (Data Asli)

C : Ciphertext (Data Acak)

Data yang dihasilkan (Ciphertext) dari proses enkripsi tersebut yang nantinya akan ditransmisikan pada jaringan ataupun diproses lebih lanjut, sehingga apabila data tersebut disadap pada saat proses pengiriman data melalui jaringan, tidak dapat dibaca dengan mudah karena telah menjadi data tersandi atau teracak.

Dan untuk mengembalikan data tersandi atau teracak menjadi data asli yakni dilakukan sebuah proses deskripsi data. Secara matematis sederhana deskripsi dapat dijelaskan sebagai berikut :

D= C>M> P

Ket : D : Deskripsi

M : Metode Pendeskripsian Data

C : Ciphertext (Data Acak)

P : Plaintext (Data Asli)

Sehingga melalui proses dekripsi data tersebut didapatkan data asli (Plaintext).

Melihat perkembangan teknik keamanan data atau informasi yang menjadi sangat penting dalam dunia teknologi informasi, maka penulis mencoba membuat sebuah metode enkripsi pengamanan data informasi yang penulis beri nama dengan Algoritma PR2 (PseudocodeRicky2) setelah sebelumnya penulis mencoba membuat algoritma enkriksiPR, dan Algoritma PR2 merupakan versi update dari algoritma enkripsiPR sebelumnya. Algoritma ini merupakan algoritma enkripsi simetrik dengan jenis stream cipher, yang memproses data secara kontinyu. Algoritma enkripsi ini dapat diterapkan pada proses pengiriman data melalui jaringan ataupun pada proses pengolahan data lokal tanpa menggunakan media jaringan. Walaupun telah banyak beredar enkripsi data di dunia, seperti algoritma Blowfish, RC4, DES, AES, GHOST, Idea, Seal, SCOP, RSA dan lain-lainnya, dari dalam negeri seperti algoritma BC2, BC3 dan lain-lainnya, tetapi mudah-mudahan algoritma ini dapat menjadi sebuah metode alternatif enkripsi data, untuk mengamankan data informasi dari pihak-pihak yang tidak berkepentingan.






BAB II



KONSEP DASAR PEMBUATAN ALGORITMA PR2 UNTUK KEAMANAN



DATA JARINGAN ATAU DATA LOKAL





Algoritma PR2 merupakan metode enkripsi menggunakan metode simetrik dan pengolahan dalam bentuk stream cipher, sehingga kata kunci yang sama digunakan untuk proses enkripsi dan dekripsi, dan algoritma ini mengenkripsi data (plaintext) dan mendeskripsi bit-bit data (ciphertext) secara kontinyu.

Untuk memahami cara kerja Algoritma PR2, dapat dimulai dengan melihat konsep dasar bagaimana Algoritma PR2 ini bekerja. Hal ini dilakukan untuk memahami cara kerja algoritma ini lebih lanjut. Algoritma PR2 menggunakan 2 operasi dasar untuk proses enkripsi dan deskripsi sebagai berikut :



2.1 Proses Inisialisasi Kunci (Key)

Proses inisialisasi kunci (key) yakni untuk memproses karakter-karakter pada kunci (key) menjadi nilai byte dan mengubah karakter-karakter kunci (key) menjadi substitusi key yang menjadi input dalam proses utama yakni proses enkripsi dan deskripsi data. Proses inisialisasi kunci (key) terdiri dari 6 tahapan proses yakni :

Tahap pertama menentukan inisialisasi awal variabel yang digunakan pada proses insialisasi kunci (key) yaitu :

2.1.1. Kata kunci (key) variabel ini disimbolkan dengan Kata_Kunci dan nantinya dikembangkan menjadi array r dengan range 1, 2, ……256 yang akan dijelaskan pada bagian selanjutnya, dan nilai array ini yang digunakan sebagai substitusi key pada proses utama untuk enkripsi dan dekripsi data, tipe variabel Kata_Kunci ini adalah string.

2.1.2. Untuk menampung per-karakter dari key pada tahap kedua proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol kar dengan tipe byte, dan variabel kar ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.3. Untuk menampung nilai panjang string dari kunci (key) pada tahap kedua, ketiga, keempat, kelima dan keenam pada proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol i dengan tipe integer, dan variabel i ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.4. Untuk menampung jumlah perulangan yang terjadi pada proses mendapatkan nilai byte per-karakter kunci (key) pada tahap kedua, ketiga, keempat, kelima dan keenam pada proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol uk dengan tipe integer, dan variabel uk ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.5. Untuk menampung input yang digunakan sebagai jumlah perulangan yang terjadi pada proses mendapatkan nilai byte per-karakter kunci (key) pada tahap kedua, ketiga, keempat, kelima dan keenam pada proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, input tersebut berisi nilai dari hasil pertambahan variabel i yang telah dijelaskan pada bagian sebelumnya dengan nilai 1, digunakan variabel dengan simbol kr dengan tipe integer, dan variabel kr ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.6. Untuk menampung nilai penggabungan antara variabel kar yang telah dijelaskan sebelumnya pada tahap kedua proses inisialisasi kunci (key) dan variabel var_pertama, yang akan dijelaskan pada bagian selanjutnya, dan nilai kar tersebut telah diubah terlebih dahulu menjadi nilai string, digunakan variabel dengan simbol var_pertama dengan tipe string, dan variabel var_pertama ini diisi dengan string kosong pada awal inisialisasi kunci.

2.1.7. Untuk menampung pembagian nilai variabel var_pertama dengan modulus 256, dan sebelumnya nilai pada variabel var_pertama diubah menjadi nilai integer, dan hasil proses pembagian nilai variabel var_pertama dengan modulus 256, digunakan variabel dengan simbol ff dengan tipe integer, dan variabel ff ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.8. Untuk menampung nilai pertambahan antara variabel kar yang telah dijelaskan sebelumnya pada tahap ketiga proses inisialisasi kunci (key) dan variabel var_kedua, yang akan dijelaskan pada bagian selanjutnya dan hasil proses penambahan tersebut dilakukan juga proses pembagian dengan modulus 256 , digunakan variabel dengan simbol var_kedua dengan tipe integer, dan variabel var_kedua ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.9. Untuk menampung nilai penggabungan antara variabel kar yang telah dijelaskan sebelumnya pada tahap ketiga proses inisialisasi kunci (key) dan variabel var_ketiga, yang akan dijelaskan pada bagian selanjutnya, dan nilai kar tersebut telah diubah terlebih dahulu menjadi nilai string, digunakan variabel dengan simbol var_ketiga dengan tipe string, dan variabel var_ketiga ini diisi dengan string kosong pada awal inisialisasi kunci.

2.1.10. Untuk menampung pembagian nilai variabel var_ketiga dengan modulus 256, dan sebelumnya nilai pada variabel var_ ketiga diubah menjadi nilai integer, dan hasil proses pembagian nilai variabel var_ ketiga dengan modulus 256, digunakan variabel dengan simbol ss dengan tipe integer, dan variabel ss ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.11. Untuk menampung hasil antara perkalian nilai integer variabel var_ketiga, nilai integer var_pertama dan var_kedua, dan terlebih dahulu hasil perkalian tersebut dilakukan proses pembagian dengan modulus 256 pada tahap keempat proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol gabungan_var dengan tipe integer, dan variabel gabungan_var ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.12. Nilai yang dihasilkan pada tahap keempat dan kelima pada proses inisialisasi kunci yang akan dijelaskan pada bagian selanjutnya, yang ada pada variabel putaran, dan nantinya nilai ini merupakan jumlah perulangan pada proses substitusi key, digunakan variabel dengan simbol putaran, tipe variabel ini adalah integer. Dan variabel putaran ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.13. Nilai variabel kar yang ada pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol b, tipe variabel b ini adalah integer, dan variabel ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.14. Nilai pada variabel ke yang akan dijelaskan pada bagian selanjutnya dijadikan input nilai pada variabel dengan simbol n ini, tipe variabel ini adalah integer, variabel n dilakukan proses penambahan dengan variabel b yang telah dijelaskan pada bagian sebelumnya, proses penambahan ini digunakan untuk mendapatkan nilai pada variabel hitung, pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya. Variabel n ini diisi dengan nilai 1 pada awal inisialisasi kunci dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan substitusi key yang terjadi.

2.1.15. Untuk menampung nilai variabel awal perulangan yang terjadi dalam memproses nilai pada variabel b yang telah dijelaskan sebelumnya menjadi nilai dalam proses pengisian array rannumber dan array r dari range 1..256, dan juga sebagai inisial range dari array rannumber dan array r yang digunakan pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, nilai variabel awal tersebut disimpan pada variabel dengan simbol ax dan tipe variabel ini adalah integer, dan variabel ax ini diisi dengan nilai 1 pada awal perulangan dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan yang terjadi.

2.1.16. Untuk menampung hasil dari proses penambahan antara variabel n variabel b yang telah dijelaskan pada bagian sebelumnya, pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, hasil proses penambahan tersebut disimpan pada variabel dengan simbol hitung, tipe variabel ini adalah integer. Variabel hitung ini diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.17. Untuk menampung nilai dalam proses penyeleksian kondisi pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, dalam menentukan nilai variabel hitung, pada tahap keenam proses inisialisasi kunci (key) juga, digunakan variabel dengan simbol bal, tipe variabel ini adalah integer. Dan variabel bal ini diisi dengan nilai 0 pada awal inisialisasi kunci dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan yang terjadi.

2.1.18. Untuk menampung nilai dalam proses penyeleksian kondisi perulangan kelima pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol angka, tipe variabel ini adalah integer. Dan variabel angka ini diisi dengan nilai 0 pada awal inisialisasi kunci dan nilai pada variabel ini akan berubah sesuai nilai variabel hitung yang dimasukan pada variabel angka ini yang telah dijelaskan sebelumnya.

2.1.19. Untuk menampung nilai dalam proses penyeleksian kondisi perulangan kedua pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol v, tipe variabel ini adalah integer. Dan variabel v ini diisi dengan nilai 1 pada awal inisialisasi kunci (key) dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan yang terjadi.

2.1.20. Untuk menampung nilai variabel awal perulangan keenam dan juga sebagai inisial range dari array rannumber pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, dalam pengisian nilai 0 kembali pada array rannumber dari range 1..256, digunakan variabel dengan simbol np dan tipe variabel ini adalah integer. Dan variabel np ini diisi dengan nilai 1 pada awal terjadi perulangan, dan nilainya bertambah 1 sesuai dengan perulangan yang terjadi.

2.1.21. Untuk menampung jumlah perulangan substitusi key yang terjadi sebagai batasan perulangan pertama akan berhenti pada tahap keenam proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol nu dengan tipe integer, dan variabel nu ini diisi dengan nilai 0 pada awal inisialisasi kunci dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan substitusi key yang terjadi.

2.1.22. Untuk menampung jumlah perulangan substitusi key yang terjadi dan nilai ini menjadi input nilai pada variabel n yang telah dijelaskan sebelumnya, disimpan pada variabel dengan simbol ke dengan tipe integer, dan variabel ke ini diisi dengan nilai 1 pada awal inisialisasi kunci dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan substitusi key yang terjadi.

2.1.23. Array rannumber dengan range 1..256 yang digunakan sebagai input untuk nilai array Array r yang akan dijadikan substitusi, tipe variabel ini adalah integer. Array rannumber ini dari range 1..256 diisi dengan nilai 0 pada awal inisialisasi kunci dan diisi nilai 0 juga pada saat perulangan kedua pada tahap keenam berhenti pada proses inisialisasi kunci (key) yang akan dijelaskan pada bagian selanjutnya.

2.1.24. Array r dengan range 1..256 yang digunakan sebagai substitusi key dan akan digunakan sebagai salah satu variabel dalam proses dalam pengolahan data pada proses enkripsi ataupun deskripsi. Tipe variabel ini adalah integer. Array r ini dari range 1..256 diisi dengan nilai 0 pada awal inisialisasi kunci.

2.1.25. Array buffer dengan range 0..255 yang digunakan sebagai variabel penampung data dari pembacaan input data file stream yang akan dienkripsi ataupun deskripsi dan nantinya nilai pada array ini akan dimanipulasi bitnya pada proses enkripsi atau deskripsi data. Tipe variabel ini adalah byte.

2.1.26. Untuk menampung nilai integer ukuran keseluruhan jumlah byte pada array buffer yang berisi input data file stream digunakan variabel dengan simbol data_buffer dengan tipe integer.

2.1.27. Untuk menampung nilai awal perulangan kedua dalam pemanipulasian bit pada proses enkripsi dan deskripsi data yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol x dengan tipe integer, dan perulangan kedua tersebut akan berhenti pada variabel akhir perulangan kedua sama dengan nilai data_buffer dikurangi 1. Variabel x ini diisi dengan nilai 0 pada awal perulangan kedua pada proses enkripsi dan deskripsi data, dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan kedua yang terjadi.

2.1.28. Untuk menampung nilai per-karakter array buffer yang berisi input data file stream yang akan dienkripsi atau deskripsi pada proses enkripsi dan deskripsi data yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol c dengan tipe byte. Variabel c ini diisi dengan nilai 0 pada awal proses enkripsi dan deskripsi data.

2.1.29. Untuk menampung nilai integer dari nilai variabel c yang telah dijelaskan sebelumnya, nilai pada variabel c tersebut diubah menjadi nilai integer, digunakan variabel dengan simbol z dengan tipe integer. Variabel z ini diisi dengan nilai 0 pada awal proses enkripsi dan deskripsi data.

2.1.30. Untuk menampung nilai range pada array r pada proses enkripsi dan deskripsi data yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol e dengan tipe integer, dan variabel e ini diisi dengan nilai 1 pada awal proses enkripsi dan deskripsi data, dan nilai pada variabel ini akan bertambah 1 sesuai dengan perulangan kedua yang terjadi pada proses enkripsi dan deskripsi data, apabila nilai variabel e tersebut lebih dari 256 maka nilainya akan kembali menjadi 1.

2.1.31. Untuk menampung hasil pembagian dengan modulus 256 antara pertambahan nilai variabel putaran dan nilai variabel gabungan_kar serta dengan 2 kali nilai dari array r per-range (e) dikurangi nilai dari array r range berikutnya (e+1) untuk kondisi nilai range array r tidak sama dengan nilai 256 atau dikurangi nilai dari array r range pertama (e=1) untuk kondisi nilai range array r sama dengan nilai 256, variabel penampung hasil nilai tersebut digunakan variabel dengan simbol u dengan tipe integer. Variabel u ini diisi dengan nilai 0 pada awal proses enkripsi dan deskripsi data.

2.1.32. Untuk menampung hasil dari pemanipulasian bit pada proses enkripsi dan deskripsi data yang akan dijelaskan pada bagian selanjutnya, digunakan variabel dengan simbol m dengan tipe integer.

2.1.33. Array bidikan dengan range 0..255 digunakan sebagai penampung data nilai variabel m. Dan juga data array bidikan ini yang nantinya dijadikan output file stream baik pada proses enkripsi data ataupun proses deskripsi data. Tipe variabel ini adalah byte.



Tahap kedua yakni memproses per-karakter kunci (key), pertama-tama dihitung panjang string kunci (key). Jumlah karakter kunci (key) maksimal yang dapat diproses pada bagian proses substitusi key nanti yakni 256 karakter, lebih dari itu tidak dapat diproses pada proses substitusi key, walaupun dapat ditampung pada variabel kunci (key). Dan jumlah nilai panjang string tersebut disimbolkan dengan i, dan selanjutnya nilai i tersebut dilakukan proses penambahan dengan nilai 1. Dan nilai i tersebut disimpan pada variabel kr, kemudian nilai kr tersebut dilakukan proses pengurangan dengan nilai 1 dan disimpan pada variabel uk. Dan variabel uk inilah yang digunakan sebagai jumlah perulangan yang terjadi, perulangan baru berhenti apabila nilai variabel uk sama dengan 1 karena perulangan yang dilakukan merupakan bentuk perulangan mundur dimana nilai variabel uk akan berkurang 1 tiap terjadi perulangan sampai nilai uk sama dengan 1. Dan nilai i juga digunakan sebagai nilai dari karakter ke-i dari kunci (key). Kemudian dilakukan proses perulangan untuk mendapatkan nilai byte per-karakter dari kunci (key) tersebut, dimana pada tiap perulangan yang terjadi nilai i dilakukan proses pengurangan dengan nilai 1, nilai byte per-karakter dari kunci (key) selama perulangan disimpan pada variabel dengan simbol kar, setelah itu nilai pada variabel kar tersebut diubah menjadi bentuk variabel dengan tipe string, nilai string pada variabel kar tersebut akan digabung dengan variabel var_pertama yang dijelaskan pada bagian inisialisasi awal kunci (key), pada awal proses perulangan nilai variabel var_pertama berisi string kosong, untuk selanjutnya nilai var_pertama berubah sesuai dengan nilai yang dihasilkan pada proses yang dijelaskan berikutnya. Kemudian nilai dari penggabungan string pada var_pertama dan variabel kar tersebut disimpan pada variabel var_pertama juga. Setelah itu nilai pada variabel var_pertama diubah menjadi nilai integer dan nilai integer tersebut dilakukan proses pembagian dengan modulus 256 dan hasilnya disimpan pada variabel ff, kemudian nilai pada variabel ff diubah menjadi nilai string dan disimpan pada variabel var_pertama. Kemudian nilai variabel var_pertama tersebut digunakan untuk proses seperti yang telah dijelaskan di atas pada perulangan selanjutnya, sampai nilai byte per-karakter dari kunci (key) didapatkan seluruhnya.

Tahap ketiga yakni sama dengan proses di atas yakni memproses per-karakter dari array kunci (key), pertama-tama dihitung panjang string kunci (key). Jumlah karakter kunci (key) maksimal yang dapat diproses pada bagian proses substitusi key nanti yakni 256 karakter, lebih dari itu tidak dapat diproses pada proses substitusi key, walaupun dapat ditampung pada variabel key. Dan jumlah nilai panjang string tersebut disimbolkan dengan i, dan selanjutnya nilai i tersebut dilakukan proses penambahan dengan nilai 1. Dan nilai i tersebut disimpan pada variabel kr, kemudian nilai kr tersebut dilakukan proses pengurangan dengan nilai 1 dan disimpan pada variabel uk. Dan variabel uk inilah yang digunakan sebagai jumlah perulangan yang terjadi, perulangan baru berhenti apabila nilai variabel uk sama dengan 1 karena perulangan yang dilakukan merupakan bentuk perulangan mundur dimana nilai variabel uk akan berkurang 1 tiap terjadi perulangan sampai nilai uk sama dengan 1. Dan nilai i juga digunakan sebagai nilai dari karakter ke-i dari kunci (key). Kemudian dilakukan proses perulangan untuk mendapatkan nilai byte per-karakter dari kunci (key) tersebut, dimana pada tiap perulangan yang terjadi nilai i dilakukan proses pengurangan dengan nilai 1, nilai byte per-karakter dari kunci (key) selama perulangan disimpan pada variabel dengan simbol kar, setelah itu nilai pada variabel kar tersebut dilakukan proses penambahan dengan variabel var_kedua yang dijelaskan pada bagian inisialisasi awal kunci (key), pada awal proses perulangan nilai variabel var_kedua berisi nilai nol, untuk selanjutnya nilai var_kedua berubah sesuai dengan nilai yang dihasilkan pada proses penambahan antara variabel var_kedua dan nilai variabel kar pada proses perulangan untuk mendapatkan nilai integer per-karakter dari kunci (key) berikutnya. Kemudian jumlah nilai dari proses penambahan pada var_kedua dan variabel kar tersebut dilakukan proses pembagian dengan modulus 256, setelah itu hasil nilainya disimpan pada variabel var_kedua juga. Proses selanjutnya nilai pada variabel kar diubah menjadi nilai string dan nilai string tersebut dilakukan proses penggabungan dengan variabel var_ketiga yang dijelaskan pada bagian inisialisasi awal kunci (key), pada awal proses perulangan nilai variabel var_ketiga berisi nilai string kosong, untuk selanjutnya nilai var_ketiga berubah sesuai dengan nilai yang dihasilkan pada proses penggabungan antara variabel var_ketiga dan nilai variabel kar pada proses perulangan untuk mendapatkan nilai integer per-karakter dari kunci (key) berikutnya dan hasilnya disimpan pada variabel var_ketiga juga, kemudian nilai pada variabel var_ketiga diubah menjadi nilai integer, dan nilai integer tersebut dilakukan proses pembagian dengan modulus 256 dan nilainya disimpan pada variabel ss. Setelah itu nilai variabel ss diubah menjadi nilai string dan nilai string tersebut disimpan pada variabel var_ketiga. Kemudian nilai variabel var_kedua dan var ketiga tersebut digunakan untuk proses seperti yang telah dijelaskan di atas pada perulangan selanjutnya, sampai nilai byte per-karakter dari kunci (key) didapatkan seluruhnya.

Tahap keempat yakni nilai variabel var_ketiga yang telah didapatkan pada proses sebelumnya diubah menjadi nilai integer, dan nilai variabel var_pertama yang telah didapatkan pada proses sebelumnya diubah juga menjadi nilai integer, setelah itu nilai integer variabel var_ketiga tersebut dilakukan proses perkalian dengan nilai integer variabel var_pertama kemudian hasil proses perkalian tadi dilakukan proses perkalian kembali dengan nilai integer variabel var_kedua, dan hasil semua proses perkalian tersebut dilakukan proses pembagian dengan modulus 256 dan hasil nilainya disimpan pada variabel gabungan_var. Setelah itu dihitung panjang string dari variabel gabungan_var, jumlah nilai panjang string tersebut disimbolkan dengan i, dan selanjutnya nilai i tersebut dilakukan proses penambahan dengan nilai 1. Dan nilai i tersebut disimpan pada variabel kr, kemudian nilai kr tersebut dilakukan pengurangan dengan nilai 1 dan disimpan pada variabel uk. Dan variabel uk inilah yang digunakan sebagai jumlah perulangan yang terjadi, perulangan baru berhenti apabila nilai variabel uk sama dengan 1 karena perulangan yang dilakukan merupakan bentuk perulangan mundur dimana nilai variabel uk akan berkurang 1 tiap terjadi perulangan sampai nilai variabel uk sama dengan 1. Dan nilai i juga digunakan sebagai nilai dari karakter ke-i dari nilai variabel gabungan_var. Kemudian dilakukan proses perulangan untuk mendapatkan nilai byte per-karakter variabel gabungan_kar tersebut, dimana pada tiap perulangan yang terjadi nilai i dilakukan pengurangan dengan nilai 1, nilai byte yang didapatkan dari per-karakter variabel gabungan_kar selama perulangan dan nilainya disimpan pada variabel dengan simbol kar, setelah itu nilai pada variabel kar tersebut dilakukan proses perkalian dengan nilai pada variabel kar itu juga, dan hasilnya dilakukan proses penambahan dengan variabel putaran yang telah dijelaskan pada bagian sebelumnya, pada awal proses perulangan nilai variabel putaran berisi nilai nol, untuk selanjutnya nilai variabel putaran berubah sesuai dengan nilai yang dihasilkan pada proses pertambahan antara variabel putaran dan hasil proses perkalian antara variabel kar dan variabel kar itu juga, pada proses perulangan untuk mendapatkan nilai integer per-karakter dari variabel gabungan_var berikutnya, kemudian hasilnya disimpan pada variabel putaran juga.

Tahap kelima yakni memproses per-karakter dari kunci (key) juga, pertama-tama dihitung panjang string kunci (key). Jumlah karakter kunci (key) maksimal yang dapat diproses pada bagian proses substitusi key nanti yakni 256 karakter, lebih dari itu tidak dapat diproses pada proses substitusi key, walaupun dapat ditampung pada variabel key. Dan jumlah nilai panjang string tersebut disimbolkan dengan i, dan selanjutnya nilai i tersebut dilakukan proses penambahan dengan nilai 1. Dan nilai i tersebut disimpan pada variabel kr, kemudian nilai kr tersebut dilakukan proses pengurangan dengan nilai 1 dan disimpan pada variabel uk. Dan variabel uk inilah yang digunakan sebagai jumlah perulangan yang terjadi, perulangan baru berhenti apabila nilai variabel uk sama dengan 1 karena perulangan yang dilakukan merupakan bentuk perulangan mundur dimana nilai variabel uk akan berkurang 1 tiap terjadi perulangan sampai nilai uk sama dengan 1. Dan nilai i juga digunakan sebagai nilai dari karakter ke-i dari kunci (key). Kemudian dilakukan proses perulangan untuk mendapatkan nilai byte per-karakter dari kunci (key) tersebut, dimana pada tiap perulangan yang terjadi nilai i dilakukan pengurangan dengan nilai 1, nilai byte per-karakter dari kunci (key) selama perulangan disimpan pada variabel kar, setelah itu nilai pada variabel putaran yang telah didapatkan pada proses sebelumnya dilakukan proses pengurangan dengan nilai pada variabel kar tadi, kemudian hasilnya dilakukan proses pembagian dengan modulus 16, dan hasil dari proses pembagian dengan modulus 16 tersebut disimpan pada variabel putaran juga. Kemudian proses selanjutnya apabila nilai pada variabel putaran kurang dari 1, maka nilai pada variabel putaran tersebut dilakukan proses perkalian dengan nilai (-1), sehingga nilainya menjadi positif, dan hasilnya disimpan pada variabel putaran juga.

Tahap keenam merupakan proses substitusi key. Pertama-tama dilakukan proses perulangan pertama (perulangan ini terdiri dari perulangan kedua, ketiga, keempat, kelima dan keenam yang nanti akan dijelaskan pada bagian selanjutnya). Untuk selanjutnya dilakukan perulangan kedua (perulangan ini terdiri dari perulangan ketiga, keempat, kelima yang nanti akan dijelaskan pada bagian selanjutnya). Kemudian setelah proses perulangan kesatu dan kedua dimulai, maka dilakukan proses untuk mendapatkan per-karakter dari kunci (key) juga, langkah pertama dihitung panjang string kunci (key), dan jumlah nilai panjang string tersebut disimbolkan dengan i, dan selanjutnya nilai i tersebut dilakukan proses penambahan dengan nilai 1. Dan nilai i tersebut disimpan pada variabel kr, kemudian nilai kr tersebut dilakukan proses pengurangan dengan nilai 1 dan disimpan pada variabel uk. Dan variabel uk inilah yang digunakan sebagai jumlah perulangan yang terjadi, perulangan baru berhenti apabila nilai variabel uk sama dengan 1 karena perulangan yang dilakukan merupakan bentuk perulangan mundur dimana nilai variabel uk akan berkurang 1 tiap terjadi perulangan sampai nilai uk sama dengan 1. Dan nilai i juga digunakan sebagai nilai dari karakter ke-i dari kunci (key). Kemudian dilakukan proses perulangan ketiga untuk mendapatkan nilai byte per-karakter dari kunci (key) tersebut, dimana pada tiap perulangan yang terjadi nilai i dilakukan proses pengurangan dengan nilai 1, nilai byte per-karakter dari kunci (key) selama perulangan disimpan pada variabel kar, kemudian nilai variabel kar tersebut disimpan pada variabel b yang telah dijelaskan pada bagian sebelumnya. Kemudian dilakukan proses perulangan keempat sebanyak 256 kali untuk memproses nilai pada variabel b tersebut menjadi nilai dalam proses pengisian array rannumber dan array r dari range 1..256, yang akan dijelaskan pada bagian selanjutnya, dengan variabel awal perulangan ax sama dengan 1 yang dijelaskan pada bagian sebelumnya, dan variabel akhir perulangan ax sama dengan 256. Langkah selanjutnya pada tiap proses perulangan dilakukan penyeleksian kondisi dimana nilai variabel v yang dijelaskan pada bagian inisialisasi awal kunci (key), sama dengan nilai variabel ax, (nilai variabel v dan ax akan bertambah 1 tiap terjadi perulangan) maka nilai pada variabel n yang dijelaskan pada bagian inisialisasi awal kunci (key), dilakukan proses penambahan dengan nilai pada variabel b yang telah didapatkan pada proses sebelumnya, dan hasilnya disimpan pada variabel hitung yang dijelaskan pada bagian inisialisasi awal kunci (key). Kemudian nilai pada variabel bal diset menjadi nilai 0, setelah itu dilakukan proses perulangan kelima, pada perulangan kelima ini dilakukan penyeleksian kondisi dimana jika nilai variabel hitung yang telah didapatkan pada proses sebelumnya lebih besar dari 256, maka nilai variabel hitung menjadi 1. Kemudian dilakukan penyeleksian kondisi kembali dimana jika nilai variabel bal yang dijelaskan pada bagian inisialisasi awal kunci (key), sama dengan 1 maka nilai variabel hitung ditambah 1, dan hasilnya disimpan pada variabel hitung juga, setelah itu dilakukan penyeleksian kondisi kembali dimana jika nilai variabel bal lebih dari 1 maka nilai variabel hitung ditambah 1, dan hasilnya disimpan pada variabel hitung juga. Kemudian nilai pada variabel hitung dimasukan pada variabel angka, setelah itu variabel bal dilakukan proses penambahan dengan nilai 1, dan hasilnya disimpan pada variabel bal juga. Untuk selanjutnya, pada perulangan kelima ini, perulangan ini baru akan berhenti jika nilai pada variabel angka yang telah didapatkan pada proses sebelumnya tidak sama dengan nilai array rannumber dari range 1..256, nilai array rannumber pada perulangan awal adalah 0, dan berubah sesuai dengan terjadinya perulangan, apabila nilai variabel angka masih sama dengan salah satu nilai array rannumber maka perulangan kembali terjadi dan nilai variabel angka akan diproses kembali, sampai nilai variabel angka tidak sama dengan salah satu nilai array rannumber. Setelah perulangan kelima berhenti kemudian masuk pada langkah selanjutnya, masih dalam proses perulangan keempat yakni nilai pada variabel hitung yang telah didapatkan sebelumnya dimasukan pada array rannumber pada range dengan nilai sama dengan variabel ax yang juga didapatkan pada proses selanjutnya. Kemudian nilai yang telah dimasukan pada array rannumber pada range dengan nilai sama dengan variabel ax tersebut, dimasukan juga pada array r dengan nilai range yang sama dengan array rannumber yakni nilai variabel ax. Dan nilai array r yang dihasilkan inilah yang disebut nilai substitusi key yang akan digunakan pada proses enkripsi dan deskripsi data yang akan dijelaskan pada bagian selanjutnya. Setelah itu nilai pada variabel v yang dijelaskan pada bagian inisialisasi awal kunci (key), dilakukan proses pertambahan dengan nilai 1, dan hasilnya disimpan pada variabel v juga. Setelah perulangan keempat berhenti karena telah didapatkan nilai per-karakter kunci (key) seluruhnya, maka langkah berikutnya dilakukan penyeleksian kondisi perulangan kedua dimana apabila nilai variabel v yang telah didapatkan pada proses sebelumnya lebih besar dari 257, maka perulangan kedua ini akan berhenti, apabila belum melebihi nilai 257 maka perulangan kedua akan terjadi kembali. Setelah perulangan kedua berhenti, langkah selanjutnya nilai pada variabel ke yang dijelaskan pada bagian inisialisasi awal kunci (key), dilakukan proses penambahan dengan nilai 1, dan hasilnya disimpan pada variabel ke juga. Setelah itu nilai pada variabel ke dimasukan juga pada variabel n yang telah disebutkan pada bagian sebelumnya. Kemudian dilakukan proses perulangan keenam yakni untuk menginisialisasi nilai array rannumber dari range 1..256 kembali menjadi 0, perulangan keenam ini berlangsung 256 kali perulangan, dimana variabel awal perulangan yakni nilai variabel np diset menjadi nilai 1 dan variabel akhir perulangan yakni nilai variabel np sampai dengan nilai 256. Dan tiap perulangan array rannumber tiap range yang nilainya sama dengan nilai variabel np, diinisialisasi / diset nilainya menjadi 0, sampai dengan range 256 / nilai variabel np sama dengan 256, sesuai dengan jumlah perulangan yang terjadi. Setelah perulangan keenam berhenti karena seluruh nilai array rannumber dari range 1..256 telah diset menjadi 0, maka nilai variabel nu yang dijelaskan pada bagian inisialisasi awal kunci (key), dilakukan proses penambahan dengan nilai 1, dan hasilnya disimpan pada variabel nu juga. Kemudian nilai variabel v diubah nilainya menjadi 1. Untuk langkah berikutnya dilakukan penyeleksian kondisi perulangan pertama dimana apabila nilai variabel nu yang telah didapatkan pada proses sebelumnya lebih besar dari nilai variabel putaran yang telah didapatkan pada proses sebelumnya, maka perulangan pertama ini akan berhenti, apabila nilai variabel nu belum melebihi nilai variabel putaran maka perulangan pertama akan terjadi kembali. Setelah perulangan pertama berhenti kemudian dilakukan pengesetan nilai variabel e atau range dari array r menjadi nilai 1, Setelah langkah tersebut dilakukan maka proses substitusi key telah selesai dilakukan untuk proses selanjutnya yakni proses enkripsi dan deskripsi data.



2.2. Proses Enkripsi Dan Deskripsi Data

Pada proses enkripsi dan deskripsi datanya algoritma PR2 ini menggunakan proses yang sama, maka data asli (plaintext) yang dua kali dienkripsi menggunakan algoritma ini dengan kunci (key) sama akan menghasilkan data asli (plaintext) kembali, begitu pula data acak (ciphertext) yang dua kali dideskripsi menggunakan algoritma ini dengan kunci (key) sama akan menghasilkan data asli (ciphertext) kembali. Tahapan proses enkripsi dan deskripsi yakni, dilakukan pembacaan input data file stream yang akan dienkripsi atau dideskripsi (karena algoritma ini berjenis stream cipher maka digunakan file stream), kemudian input data file stream tersebut dimasukan ke dalam array buffer, seperti yang telah dijelaskan pada bagian inisialisasi kunci (key). Dan dilakukan pembacaan ukuran keseluruhan jumlah byte pada array buffer tersebut kemudian hasilnya disimpan pada variabel data_buffer seperti yang telah dijelaskan pada bagian inisialisasi awal kunci (key). Setelah itu dilakukan penyeleksian kondisi perulangan pertama dimana apabila nilai data_buffer lebih besar dari 0 maka perulangan pertama akan dilakukan dan apabila nilai data_buffer kurang dari atau sama dengan 0 maka perulangan pertama tidak akan pernah dilakukan, kemudian masih dalam perulangan pertama dilakukan perulangan kedua sebanyak nilai pada variabel data_buffer dikurangi 1, untuk variabel awal perulangan kedua yakni nilai variabel x sama dengan 0 dan variabel akhir perulangan kedua yakni dengan nilai pada variabel data_buffer dikurangi 1. Kemudian dilakukan proses untuk mendapatkan nilai per-byte pada array buffer, yang selanjutnya akan dimanipulasi bit-perbitnya. Nilai byte pada array buffer yang telah didapatkan kemudian disimpan pada variabel c yang dijelaskan pada bagian inisialisasi awal kunci (key), setelah itu nilai pada variabel c tersebut diubah menjadi nilai integer, dan hasilnya disimpan pada variabel z yang dijelaskan pada bagian inisialisasi awal kunci (key). Setelah itu dilakukan penyeleksian kondisi yakni, kondisi pertama apabila nilai range (e) pada array r pada waktu proses penyeleksian kondisi tidak sama dengan nilai 256 maka prosesnya yakni, nilai variabel putaran yang didapatkan pada proses inisialisasi kunci (key) dilakukan proses penambahan dengan nilai variabel gabungan_kar yang telah dijelaskan pada bagian inisialisasi kunci (key), kemudian dilakukan proses penambahan kembali dengan 2 kali nilai array r dengan range (e) pada waktu proses penyeleksian kondisi, setelah itu dilakukan proses pengurangan dengan nilai array r dengan range (e) berikutnya (e+1). Sedangkan untuk kondisi kedua apabila nilai range (e) array r pada waktu proses penyeleksian kondisi sama dengan nilai 256 maka prosesnya yakni, nilai variabel putaran yang didapatkan pada proses inisialisasi kunci (key) dilakukan proses penambahan dengan nilai variabel gabungan_kar yang telah dijelaskan pada bagian inisialisasi kunci (key), kemudian dilakukan proses penambahan kembali dengan 2 kali nilai array r dengan range (e) pada waktu proses penyeleksian kondisi, setelah itu dilakukan proses pengurangan dengan nilai array r dengan range (e) pertama (e =1). Dan dari hasil dari proses penambahan dan proses pengurangan tersebut dilakukan proses pembagian dengan modulus 256, dan hasilnya disimpan pada variabel u yang dijelaskan pada bagian inisialisasi awal kunci (key). Setelah itu dilakukan proses pemanipulasian bit yakni dengan meng-xor-kan nilai pada variabel z yang telah didapatkan pada proses sebelumnya dengan nilai pada variabel u yang juga telah didapatkan pada proses sebelumnya, dan hasilnya disimpan pada variabel m yang telah dijelaskan pada bagian awal inisialisasi kunci (key). Kemudian dilakukan proses untuk mendapatkan nilai byte dari nilai integer variabel m tersebut (mengkonversikan nilai integer variabel m menjadi byte), dan hasilnya disimpan pada array bidikan dengan range yang nilainya sama dengan variabel x yang telah disebutkan pada proses sebelumnya. Setelah itu dilakukan proses penambahan nilai variabel e atau range dari array r dengan nilai 1, dan hasilnya disimpan pada variabel e juga. Selanjutnya dilakukan penyeleksian kondisi dimana jika nilai variabel e atau range dari array r lebih dari 256, maka nilai variabel e atau range dari array r diubah menjadi nilai 1. Proses di atas akan kembali diproses sampai perulangan kedua berhenti, dimana seluruh data bit pada array buffer telah dimanipulasi seluruhnya. Dan apabila proses perulangan kedua dan pemanipulasian bit pada array buffer telah selesai dilakukan, maka nilai pada array bidikan yang telah diisi dengan nilai variabel m yang telah dikonversikan menjadi byte akan dijadikan output file stream untuk kemudian ditulis pada file stream yang dikehendaki. Kemudian dilakukan pembacaan ukuran keseluruhan jumlah byte pada array buffer kembali dan hasilnya disimpan pada variabel data_buffer untuk kemudian nilainya digunakan sebagai penyeleksian kondisi dimana perulangan pertama akan berhenti seperti yang telah dijelaskan pada bagian sebelumnya. Setelah langkah tersebut dilakukan maka proses keseluruhan proses enkripsi dan deskripsi telah selesai dilakukan.

Keseluruhan dari konsep dasar pembuatan algoritma PR2 ini di jelaskan pada Gambar Flowchart Konsep Dasar Pembuatan Algoritma PR2 Untuk Keamanan Data Jaringan Atau Data Lokal





















BAB III

KESIMPULAN



Dengan memahami uraian konsep dasar pembuatan algoritma PR2 tersebut secara berurutan dari bagian awal sampai akhir diharapkan dapat diimplementasikan kedalam sistem keamanan data jaringan atau data lokal, dengan berbagai bahasa pemrograman yang mendukung penggunaan input atau output file stream, karena jenis algoritma ini adalah stream cipher yang memproses data yang dienkripsi atau dideskripsi secara kontinyu. Kecepatan algoritma ini relatif cepat dalam memproses data yang akan dienkripsi atau dideskripsi, karena menggunakan perhitungan matematika sederhana yakni proses pertambahan, pengurangan, perkalian, pembagian modulo dan penerapan logika xor dalam pemanipulasian bit dalam byte-byte data file stream yang akan dienkripsi atau dideskripsi. Dan dikarenakan variabel-variabel dalam algoritma ini menggunakan tipe integer dalam proses perhitungan dalam menghasilkan nilai substitusi key, maka algoritma ini cocok dipergunakan pada prosesor 32 bit ke atas dengan memory minimal 5 kb ke atas, algoritma ini tidak dapat dipergunakan untuk prosesor 8 bit dan 16 bit, sehingga tidak cocok untuk penggunaan pada smartcard yang menggunakan prosesor 8 bit.







DAFTAR PUSTAKA





Junaedi, Fajar, Algoritma dan Pemrograman, Salemba Infotek, Jakarta, 2007

Kristianto, Andi, Keamanan Data pada Jaringan Komputer, Gava Media, Yogyakarta, 2003

Wahana Komputer Semarang, Memahami Model Enkripsi & Security Data, Andi Offset, Yogyakarta, 2003






Untuk kode program penerapan algoritma PR2 dalam bahasa delphi adalah sebagai berikut :

unit unitPR2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Edit2: TEdit;
Edit3: TEdit;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Button2: TButton;
Button3: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Kata_Kunci:string;
c:byte;
z,e:integer;
Data_buffer,x:Integer;
Bidikan : Array[0..255] of Byte;
Buffer : Array[0..255] of Byte;
acak : Array[1..256] of integer;
urutan:integer;

implementation

{$R *.dfm}


procedure PR2(Key:string); // Proses Inisialisasi Kunci (Key)
var
c,kar:byte;
kr,uk,ax,np,angka,ke,bal,v,n,hitung,i,u,m,z,e:integer;
b,ff,ss,nu,gabungan_var,putaran,var_kedua:integer;
var_pertama,var_ketiga:shortstring;
Kata_Kunci:shortstring;
Data_buffer,x,un:Integer;
rannumber : Array[1..256] of integer;
r : Array[1..256] of integer;
begin
var_pertama:='';
nu:=0;
ke:=1;
putaran:=0;
bal:=0;
b:=0;
hitung:=0;
angka:=0;
n:=1;
v:=1;
kata_kunci:=key;
if not(Kata_Kunci='') then
begin
Kata_kunci:=(Kata_kunci);
i := length(Kata_Kunci);
i:=i+1;
kr:=i-1;
for uk:=kr downto 1 do
begin
i := i - 1;
kar:=byte(Kata_Kunci[i]);
var_pertama:=var_pertama+inttostr(kar);
ff:=strtoint(var_pertama)mod 256;
var_pertama:=inttostr(ff);
end;

var_kedua:=0;
var_ketiga:='';
Kata_kunci:=(Kata_Kunci);
i := length(Kata_Kunci);
i:=i+1;
kr:=i-1;
for uk:=kr downto 1 do
begin
i := i - 1;
kar:=byte(Kata_Kunci[i]);
var_kedua:=(var_kedua+kar)mod 256;
var_ketiga:=var_ketiga+inttostr(kar);
ss:=strtoint(var_ketiga)mod 256;
var_ketiga:=inttostr(ss);
if i=1then
putaran:=kar;
end;

gabungan_var:=(strtoint(var_ketiga)*strtoint(var_pertama)*var_kedua)mod 256 ;
i := length(floattostr(gabungan_var));
i:=i+1;
kr:=i-1;
for uk:=kr downto 1 do
begin
i := i - 1;
kar:=byte((floattostr(gabungan_var))[i]);
putaran:=putaran+((kar)*(kar));
end;

Kata_kunci:=(Kata_kunci);
var_pertama:='';
i := length(Kata_kunci);
i:=i+1;
kr:=i-1;
for uk:=kr downto 1 do
begin
i := i - 1;
kar:=byte(Kata_kunci[i]);
putaran:=(putaran-kar)mod 16;
if putaran<0 br="br" then="then">putaran:=putaran*(-1);
end;

repeat
repeat
Kata_Kunci:=(Kata_Kunci);
i := length(Kata_kunci);
i:=i+1;
kr:=i-1;
for uk:=kr downto 1 do
begin
i := i - 1;
kar:=byte(Kata_kunci[i]);
b:=kar;
for ax:=1 to 256 do
begin
if v=ax then
begin
hitung:=n+b;
bal:=0;
begin
repeat
if hitung>256 then
hitung:=1;
if bal=1 then
hitung:=hitung+1;
if bal>1 then
hitung:=hitung+1;
angka:=(hitung);
bal:=bal+1;
until not(
(angka=(rannumber[1])) or (angka=(rannumber[2]))or (angka=(rannumber[3]))or (angka=(rannumber[4]))or (angka=(rannumber[5]))or (angka=(rannumber[6]))or (angka=(rannumber[7]))or (angka=(rannumber[8]))
or (angka=(rannumber[9]))or (angka=(rannumber[10]))or (angka=(rannumber[11]))or (angka=(rannumber[12]))or (angka=(rannumber[13]))or (angka=(rannumber[14]))or (angka=(rannumber[15]))or (angka=(rannumber[16]))or (angka=(rannumber[17]))or (angka=(rannumber[18]))or (angka=(rannumber[19]))or (angka=(rannumber[20]))or (angka=(rannumber[21]))or (angka=(rannumber[22]))or (angka=(rannumber[23]))or (angka=(rannumber[24])) or (angka=(rannumber[25]))or (angka=(rannumber[26]))or (angka=(rannumber[27]))or (angka=(rannumber[28]))
or (angka=(rannumber[29]))or (angka=(rannumber[30]))or (angka=(rannumber[31]))or (angka=(rannumber[32]))or (angka=(rannumber[33]))or (angka=(rannumber[34]))or (angka=(rannumber[35]))or (angka=(rannumber[36]))or (angka=(rannumber[37]))or (angka=(rannumber[38]))or (angka=(rannumber[39]))or (angka=(rannumber[40]))or (angka=(rannumber[41]))or (angka=(rannumber[42]))or (angka=(rannumber[43]))or (angka=(rannumber[44]))or (angka=(rannumber[45]))or (angka=(rannumber[46]))or (angka=(rannumber[47]))or (angka=(rannumber[48]))
or (angka=(rannumber[49]))or (angka=(rannumber[50]))or (angka=(rannumber[51]))or (angka=(rannumber[52]))or (angka=(rannumber[53]))or (angka=(rannumber[54]))or (angka=(rannumber[55]))or (angka=(rannumber[56]))
or (angka=(rannumber[57]))or (angka=(rannumber[58]))or (angka=(rannumber[59]))or (angka=(rannumber[60]))or (angka=(rannumber[61]))or (angka=(rannumber[62]))or (angka=(rannumber[63]))or (angka=(rannumber[64]))or (angka=(rannumber[65]))or (angka=(rannumber[66]))or (angka=(rannumber[67])) or (angka=(rannumber[68]))or(angka=(rannumber[69])) or (angka=(rannumber[70]))or (angka=(rannumber[71]))or (angka=(rannumber[72]))or (angka=(rannumber[73]))or (angka=(rannumber[74]))or (angka=(rannumber[75]))or (angka=(rannumber[76]))
or (angka=(rannumber[77]))or (angka=(rannumber[78]))or (angka=(rannumber[79]))or (angka=(rannumber[80]))or (angka=(rannumber[81]))or (angka=(rannumber[82]))or (angka=(rannumber[83]))or (angka=(rannumber[84]))or (angka=(rannumber[85]))or (angka=(rannumber[86]))or (angka=(rannumber[87]))or (angka=(rannumber[88]))or (angka=(rannumber[89]))or (angka=(rannumber[90]))or (angka=(rannumber[91]))or (angka=(rannumber[92])) or (angka=(rannumber[93]))or (angka=(rannumber[94]))
or (angka=(rannumber[95]))or (angka=(rannumber[96]))or (angka=(rannumber[97]))or (angka=(rannumber[98]))or (angka=(rannumber[99]))or (angka=(rannumber[100]))or (angka=(rannumber[101]))
or (angka=(rannumber[122]))or (angka=(rannumber[123]))or (angka=(rannumber[124]))or (angka=(rannumber[125]))or (angka=(rannumber[126]))or (angka=(rannumber[127]))or (angka=(rannumber[128]))or (angka=(rannumber[129]))or (angka=(rannumber[130]))or (angka=(rannumber[131]))or (angka=(rannumber[132]))or (angka=(rannumber[133]))or (angka=(rannumber[134]))or (angka=(rannumber[135]))or (angka=(rannumber[136]))or (angka=(rannumber[137])) or (angka=(rannumber[138]))or (angka=(rannumber[139]))or (angka=(rannumber[140]))or (angka=(rannumber[141]))
or (angka=(rannumber[142]))or (angka=(rannumber[143]))or (angka=(rannumber[144]))or (angka=(rannumber[145]))or (angka=(rannumber[146]))or (angka=(rannumber[147]))or (angka=(rannumber[148]))or (angka=(rannumber[149]))or (angka=(rannumber[150]))or (angka=(rannumber[151]))or (angka=(rannumber[152]))or (angka=(rannumber[153]))or (angka=(rannumber[154]))or (angka=(rannumber[155]))or (angka=(rannumber[156]))or (angka=(rannumber[157]))or (angka=(rannumber[158]))or (angka=(rannumber[159]))or (angka=(rannumber[160]))or (angka=(rannumber[161]))
or (angka=(rannumber[162]))or (angka=(rannumber[163]))or (angka=(rannumber[164]))or (angka=(rannumber[165]))or (angka=(rannumber[166]))or (angka=(rannumber[167]))or (angka=(rannumber[168]))or (angka=(rannumber[169]))
or (angka=(rannumber[170]))or (angka=(rannumber[171]))or (angka=(rannumber[172]))or (angka=(rannumber[173]))or (angka=(rannumber[174]))or (angka=(rannumber[175]))or (angka=(rannumber[176]))or (angka=(rannumber[177]))or (angka=(rannumber[178]))or (angka=(rannumber[179]))or (angka=(rannumber[180])) or (angka=(rannumber[181]))or(angka=(rannumber[182])) or (angka=(rannumber[183]))or (angka=(rannumber[184]))or (angka=(rannumber[185]))or (angka=(rannumber[186]))or (angka=(rannumber[187]))or (angka=(rannumber[188]))or (angka=(rannumber[189]))
or (angka=(rannumber[190]))
or (angka=(rannumber[191]))or (angka=(rannumber[192]))or (angka=(rannumber[192]))or (angka=(rannumber[193]))or (angka=(rannumber[194]))or (angka=(rannumber[195]))or (angka=(rannumber[196]))
or (angka=(rannumber[217]))or (angka=(rannumber[218]))or (angka=(rannumber[219]))or (angka=(rannumber[220]))or (angka=(rannumber[221]))or (angka=(rannumber[222]))or (angka=(rannumber[223]))or (angka=(rannumber[224]))or (angka=(rannumber[225]))or (angka=(rannumber[226]))or (angka=(rannumber[227]))or (angka=(rannumber[228]))or (angka=(rannumber[229]))or (angka=(rannumber[230]))or (angka=(rannumber[231]))or (angka=(rannumber[232])) or (angka=(rannumber[233]))or (angka=(rannumber[234]))or (angka=(rannumber[235]))or (angka=(rannumber[236]))
or (angka=(rannumber[237]))or (angka=(rannumber[238]))or (angka=(rannumber[239]))or (angka=(rannumber[240]))or (angka=(rannumber[241]))or (angka=(rannumber[242]))or (angka=(rannumber[243]))or (angka=(rannumber[244]))or (angka=(rannumber[245]))or (angka=(rannumber[246]))or (angka=(rannumber[247]))or (angka=(rannumber[248]))or (angka=(rannumber[249]))or (angka=(rannumber[250]))or (angka=(rannumber[251]))or (angka=(rannumber[252]))or (angka=(rannumber[253]))or (angka=(rannumber[254]))or (angka=(rannumber[255]))or (angka=(rannumber[256]))
)
end;
rannumber[ax]:=(hitung);
r[ax]:= rannumber[ax];
end;
end;
v:=v+1;
end;
until v>257;
n:=ke+1;
ke:=ke+1;
for np:=1 to 256 do
begin
rannumber[np]:=0;
end;
nu:=nu+1;
v:=1;
until nu>putaran ;
e:=1;
end;
for un:=1 to 256 do
begin
if un=256 then
u:=(putaran+gabungan_var+(r[un])+(r[un])-(r[1]))mod 256;;
if not(un=256) then
u:=(putaran+gabungan_var+(r[un])+(r[un])-(r[un+1]))mod 256;;
acak[un]:=u;
end;
urutan:=0;
end;


function OutputPR2(BitStream:integer):integer; // Proses enkripsi dan deskripsi (pemanipulasian bit-bit pada file stream)
begin
urutan:=urutan+1;
outputPR2:=BitStream xor acak[urutan];
if urutan=256 then
urutan:=0;
end;


procedure TForm1.Button3Click(Sender: TObject);
var
sumber,keluaran:TFileStream;
begin
try

if not(edit3.text='')then
begin

// Proses enkripsi dan deskripsi

label4.visible:=false;
kata_kunci:=edit3.Text;

edit1.Text:=opendialog1.filename;

edit2.Text:=savedialog1.filename;

sumber:= TFileStream.Create(edit1.Text, fmOpenRead);
sumber.Position := 0;

keluaran:= TFileStream.Create(edit2.Text,fmCreate);

Data_buffer:= sumber.Read(Buffer,SizeOf(Buffer));

PR2(kata_kunci);


while Data_buffer>0 do
begin
for x:=0 to Data_buffer-1 do
begin
c:=Buffer[x];
z:=integer(c);
Bidikan[x]:=byte(OutputPR2(z));
end;
Keluaran.Write(Bidikan,Data_buffer);
Data_buffer := Sumber.Read(Buffer,SizeOf(Buffer));



end;


sumber.Free;
keluaran.Free;
edit3.Text:='';
label4.visible:=true;

end;

except
showmessage('Kesalahan pemasukan data, silahkan masukan data kembali...');
end;


end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
edit1.Text:=opendialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if savedialog1.Execute then
edit2.Text:=savedialog1.FileName;
end;

end.



Dan untuk listing program algoritma PR2 secara lengkap silahkan klik download









___________________________________________________________________________________



APLIKASI SISTEM INFORMASI PRODUK MELALUI SMS (SMS Ky 1.0)


Aplikasi sistem informasi produk (SMS Ky 1.0) merupakan aplikasi open source untuk sistem informasi produk melalui sms, data produk dapat di akses melalui sms dengan format sms tertentu, jaringan sms yang digunakan yakni jaringan operator GSM. Aplikasi berjalan di sistem operasi windows, Aplikasi sistem informasi produk ini di bawah lisensi GPL version 2, Untuk mendapatkan aplikasi, silahkan download

- Download Installasi sistem informasi produk

Untuk source code aplikasi sistem informasi produk
- Download Source code + Installasi sistem informasi produk


Update versi SMS Ky 1.0.1 (update dari SMS Ky 1.0)

Feature tambahan pada versi SMS Ky 1.0.1

- Pengecekan sms produk yang terkirim, apabila sms tidak terkirim karena error atau Modem HP habis pulsa, maka laporan status pengiriman sms produk menjadi "Kirim gagal"
- Mendapatkan data produk lainnya dalam kategori pencarian sama, seperti metode kursor dalam pencarian record data produk


silahkan download

- Download Installasi sistem informasi produk (SMS Ky 1.0.1)

Untuk source code aplikasi sistem informasi produk
- Download Source code + Installasi sistem informasi produk(SMS Ky 1.0.1)





GAME KUIS JAWABAN ACAK VERSI 1.2 (Full version)

Game untuk melatih ketelitian dan konsentrasi, bermain dengan waktu dan ketepatan, full version, untuk mendapatkan game, Silahkan klik download



APLIKASI SHUTDOWN OTOMATIS

Aplikasi untuk mematikan komputer berdasarkan waktu yang telah ditentukan, seperti sleep timer pada remote tv, anda dapat mengatur waktu untuk mematikan komputer anda, ada 2 pilihan untuk mematikan komputer dalam program ini yakni :
1. Berdasarkan jumlah nilai waktu yang diinginkan dalam menit, seperti contoh, komputer dimatikan 20 menit yang akan datang
2. Berdasarkan jam yang diinginkan, seperti contoh, komputer dimatikan tepat pada pukul 13.00

Silahkan klik download untuk mendapatkan program aplikasi shutdown otomatis



APLIKASI CHAT

Aplikasi chat antara 2 komputer (NasionalNet), IP Lokal menjadi alamat chat pengguna, masukan alamat ip komputer tujuan, dan langsung memulai chat. Lisensi program freeware, silahkan klik download



APLIKASI PEMUTAR MUSIK DAN VIDEO PORTABLE

Aplikasi pemutar musik dan video portable (PMV version 1.0) yang dapat dijalankan langsung dari flashdisk atau media penyimpanan lainnya tanpa harus diinstall terlebih dahulu, support berbagai macam file seperti mp3, wav, wmv dan lain-lainnya. Aplikasi pemutar musik dan video ini dapat diubah background gambarnya dengan foto atau gambar yang diinginkan pengguna pada saat aplikasi sedang dijalankan. Ukuran file aplikasi pemutar musik dan video ini relatif kecil 734 kb, lisensi aplikasi ini freeware. Silahkan klik download untuk mendapatkan aplikasi pemutar musik dan video

Update pemutar musik/video (PMV version 2.0), ada perbaikan pada saat pergeseran posisi lagu pada playlist, Silahkan klik download untuk mendapatkan aplikasi pemutar musik dan video(PMV version 2.0)



PROGRAM PENYIMPAN FILE RAHASIA

Program penyimpan file rahasia 1.2, update dari Program penyimpan file rahasia 1.1 (ukuran file lebih kecil dari Program penyimpan file rahasia 1.1), untuk menyimpan file-file penting anda yang bersifat rahasia agar tidak dapat diakses oleh pihak yang tidak berhak, file-file akan dilindungi password, password yang digunakan dapat mencapai 255 karakter. Program ini menggantikan aplikasi penyimpan data rahasia versi sebelumnya yang menggunakan algoritma enkripsi PR dan berformat epr, program ini ini menggunakan algoritma enkripsi PR2. Program ini support untuk berbagai jenis file seperti mp3,jpeg,mpeg,doc,xls,pdf,3gp,txt,rtf,gif,dan lain-lainnya. File yang dilindungi dengan program ini akan berformat (.PR2). Untuk mendapatkan Program Penyimpan File Rahasia 1.2 ini, silahkan klik download



___________________________________________________________________________________

Kemaslahatan yang termanifestasi dalam kemanusiaan yang lebih besar memberi pencerahan bagi kebahagiaan hakiki

: Ricky H. Arsyad


Tuhan itu tidak perlu perlindungan, segenap ciptaanny yg perlu perlindungan

: Ricky H. Arsyad


Kejernihan rasa membawa dinamika rasa ke dalam nuansa bahagia seutuhnya

: Ricky H. Arsyad


Bersenyawa dalam kenyataan merupakan jembatan antara pemahaman tekad dan proses perjalanan sebuah tujuan

: Ricky H. Arsyad


Satu kedamaian yang terpancar menghangatkan apa yang terlewati dan apa yang belum terlewati

: Ricky H. Arsyad


Dentuman batin yang menggetarkan, memberi energi yang tak terlintas sebelumnya ke dalam alur yang penuh kepastian

: Ricky H. Arsyad


Kekuatan dalam persatuan yang terbentuk dengan kesadaran yang menggeliat dengan sendirinya

: Ricky H. Arsyad


Satu hal yang membentuk bermacam hal adalah inspirasi yang tak terbantahkan oleh dinding kebekuan kreatifitas

: Ricky H. Arsyad


Kebijakan memberi pengaruh besar dan mendalam terhadap tatanan yang sedang terjadi dan yang bakal terjadi

: Ricky H. Arsyad


Kedamaian dalam kebebasan tanpa batas apapun

: Ricky H. Arsyad


Kepribadian matang dalam kemerdekaan penciptaan rasa yang membentuk gelombang pencerahan dalam kemanusiaan yang lebih besar

: Ricky H. Arsyad


Keceriaan yang tidak habis diserap jaman

: Ricky H. Arsyad


Cinta adalah obat, Cinta adalah keteguhan imajinasi yang membahagiakan semuanya,
dan kesadaran menjadi realita yang mengartikan semuanya

: Ricky H. Arsyad


Lukisan semesta dimutakhirkan dengan visualisasi jaman dalam wujud kenyataan, dan memancarkan semburan cinta yang berenergi

: Ricky H. Arsyad


Semesta alam tersenyum dengan senyuman khas dirinya sendiri dan sesuai masa jamannya

: Ricky H. Arsyad


Proyeksi dari apa yang telah bersemayam, menjadi ragam kenyataan yang memberi warna karakter tak terbantahkan dalam balutan gejolak rasa kemanusiaan yang lebih besar

: Ricky H. Arsyad


Pola rasa yang memberi sentuhan pencerahan bagi kemutakhiran jalan pemahaman, yang membentuk kemasan keceriaan dalam dinamika perkembangan negara dan bangsa


: Ricky H. Arsyad


Membawa nuansa kenyataan dalam puncak pendalaman tertinggi, terkoneksi melalui dimensi sebuah peradaban bangsa yang memberi pencerahan disetiap sudut

: Ricky H. Arsyad


Demokrasi dalam target kemaslahatan umat seluruh alam

: Ricky H. Arsyad


Gelombang kebahagiaan yang menyatu dalam kemanusiaan yang lebih besar, merangkum keunikan jagad segala penjuru arah

: Ricky H. Arsyad


Semesta memberi keajaiban yang tak disangka dengan kekuatan menyeluruh dan komplit, dan negara menjadi wadah untuk mengimplementasikan kekuatan menjadi kebahagiaan abadi yang terasa

: Ricky H. Arsyad


Jubah kemenangan menyeruak dalam dimensi kebahagiaan yang terlatih

: Ricky H. Arsyad


Dalam ruang kebahagiaan terdapat titik pencerahan yang menakjubkan

: Ricky H. Arsyad


Keyakinan yang termanifestasi dalam segala wujud yang mencerahkan seluruh isi jagad tanpa terkecuali

: Ricky H. Arsyad


Kesadaran tercipta dari proses keseriusan

: Ricky H. Arsyad


Dalam dimensi harapan dan dimensi fakta, ada kesamaan yakni keterbatasan, yg dikawal penuh oleh hukum yg maha mutlak, dan meliputi segalanya

: Ricky H. Arsyad