Rabu, 25 Maret 2015

ALGORITMA HILL CHIPER DAN COLUMNAR

HILL CHIPER
Hill Cipher merupakan penerapan aritmatika modulo pada kriptografi. Teknik kriptografi ini menggunakan sebuah matriks persegi sebagai kunci yang digunakan untuk melakukan enkripsi dan dekripsi.

Hill Cipher diciptakan oleh Lester S. Hill pada tahun 1929 [2]. Teknik kriptografi ini diciptakan dengan maksud untuk dapat menciptakan cipher (kode) yang tidak dapat dipecahkan menggunakan teknik analisis frekuensi. Hill Cipher tidak mengganti setiap abjad yang sama pada plaintext dengan abjad lainnya yang sama pada ciphertext karena menggunakan perkalian matriks pada dasar enkripsi dan dekripsinya.

Hill Cipher yang merupakan polyalphabetic cipher dapat dikategorikan sebagai block cipher [2] karena teks yang akan diproses akan dibagi menjadi blokblok dengan ukuran tertentu. Setiap karakter dalam satu blok akan saling mempengaruhi karakter lainnya dalam proses enkripsi dan dekripsinya, sehingga karakter yang sama tidak dipetakan menjadi karakter yang sama pula.

Hill Cipher termasuk kepada algoritma kriptografi klasik yang sangat sulit dipecahkan oleh kriptanalis apabila dilakukan hanya dengan mengetahui berkas ciphertext saja. Namun, teknik ini dapat dipecahkan dengan cukup mudah apabila kriptanalis memiliki berkas ciphertext dan potongan berkas plaintext. Teknik kriptanalisis ini disebut known-plaintext attack [1].

Dasar Teknik Hill Cipher
Dasar dari teknik Hill Cipher adalah aritmatika modulo terhadap matriks. Dalam penerapannya, Hill Cipher menggunakan teknik perkalian matriks dan teknik invers terhadap matriks. Kunci pada Hill Cipher adalah matriks n x n dengan n merupakan ukuran blok. Matriks K yang menjadi kunci ini harus merupakan matriks yang invertible, yaitu memiliki inverse K-1 sehingga :
Kunci harus memiliki invers karena matriks K-1 tersebut adalah kunci yang digunakan untuk melakukan dekripsi.

Teknik Enkripsi pada Hill Cipher
Proses enkripsi pada Hill Cipher dilakukan per blok plaintext. Ukuran blok tersebut sama dengan ukuran matriks kunci. Sebelum membagi teks menjadi deretan blok-blok, plaintext terlebih dahulu dikonversi menjadi angka, masing-masing sehingga A=1, B=2, hingga Y=25. Z diberi nilai 0.

Secara matematis, proses enkripsi pada Hill Cipher adalah:

C = K . P (2)
C = Ciphertext
K = Kunci
P = Plaintext

Teknik Dekripsi pada Hill Cipher
Proses dekripsi pada Hill Cipher pada dasarnya sama dengan proses enkripsinya. Namun matriks kunci harus dibalik (invers) terlebih dahulu. Secara matematis, proses dekripsi pada Hill Cipher dapat diturunkan dari persamaan (2).

 Menjadi persamaan proses dekripsi:

Columnar Transposition
Columnar transposition merupakan salah satu metode kriptografi dimana pesan dituliskan berderet dari suatu panjang yang ditetapkan, lalu dibaca kembali kolom per kolom dengan urutan pembacaan berdasarkan suatu kata kunci. Panjang deret ditentukan oleh panjang kata kunci. Urutan pembacaan kolom berdasarkan urutan abjad kata kunci, misalnya ZEBRAS menjadi “6 3 2 4 1 5”. Perintah dipilih oleh urutan abjad dari huruf-huruf dalam kata kunci.

Regular Case (Kasus biasa)
Dalam columnar transposisi cipher biasa, ruang-ruang kosong yang diisi dengan huruf acak.
Misalnya, kita menggunakan ZEBRAS kata kunci dan pesan WE ARE DISCOVERED FLEE AT ONCE.
Grid kita akan terlihat seperti ini:

Z E B R A S
6 3 2 4 1 5
- - - - - -
W E A R E D
I S C O V E
R E D F L E
E A T O N C
E Q K J E U

Enam kolom kini ditulis dalam urutan acak didefinisikan oleh kata kunci:
EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE

Irregular Case (Kasus yang tidak teratur)
Dalam kasus yang tidak teratur, surat-surat yang kosong tidak diisi dengan  huruf acak:

Z E B R A S
6 3 2 4 1 5
- - - - - -
W E A R E D
I S C O V E
R E D F L E
E A T O N C
E  

Hal ini menyebabkan berikut (pendek) ciphertext: 
EVLNA CDTES EAROF ODEEC WIREE

Untuk memahaminya, penerima harus bekerja di luar panjang kolom dengan membagi panjang pesan  dengan panjang kunci. Langkah ini sedikit lebih sulit jika kasus tidak teratur digunakan. Setelah menentukan jumlah kolom,pesan dapat ditulis dalam kolom dan diatur ulang kembali ke pesan plaintext.

Double Column Transposition (Kolom ganda Transposisi)
Untuk membuat pesan lebih sulit untuk menguraikan, Anda dapat mengambil ciphertext yang dihasilkan oleh algoritma ini dan menjalankannya melalui enkripsi lagi  menggunakan kata kunci yang berbeda. Ini transposes kolom dua kali dan membuat  pesan sangat sulit untuk menguraikan.





Selasa, 30 Desember 2014

Beasiswa Data Print

Program beasiswa DataPrint telah memasuki tahun keempat. Setelah sukses mengadakan program beasiswa di tahun 2011 hingga 2013, maka DataPrint kembali membuat program beasiswa bagi penggunanya yang berstatus pelajar dan mahasiswa.  Hingga saat ini lebih dari 1000 beasiswa telah diberikan bagi penggunanya.
Di tahun 2014 sebanyak 700 beasiswa akan diberikan bagi pendaftar yang terseleksi. Program beasiswa dibagi dalam dua periode. Tidak ada sistem kuota berdasarkan daerah dan atau sekolah/perguruan tinggi. Hal ini bertujuan agar beasiswa dapat diterima secara merata bagi seluruh pengguna DataPrint.  Beasiswa terbagi dalam tiga nominal yaitu Rp 250 ribu, Rp 500 ribu dan Rp 1 juta. Dana beasiswa akan diberikan satu kali bagi peserta yang lolos penilaian. Aspek penilaian berdasarkan dari essay, prestasi dan keaktifan peserta.
Beasiswa yang dibagikan diharapkan dapat meringankan biaya pendidikan sekaligus mendorong penerima beasiswa untuk lebih berprestasi. 
Pendaftaran periode 1 : 7 Februari – 30 Juni 2014
Pengumuman                : 10 Juli 2014

Pendaftaran periode 2   : 1 Juli – 31 Desember 2014
Pengumuman                : 12 Januari 2015

PERIODE
JUMLAH PENERIMA BEASISWA
@ Rp 1.000.000@ Rp 500.000@ Rp 250.000
Periode 1
50 orang
50 orang
250 orang
Periode 2
50 orang
50 orang
250 orang

Info selengkapnya silahkan berkunjung ke website DataPrint dan BeasiswaDataPrint

Kamis, 11 Desember 2014

Function

Hello everyone :D
Lagi – lagi karena ini masih tugas mari selesaikan, kali ini kita akan membahas mengenai Function. Nah, apa itu function dalam SQL mari kita bahas sama – sama .

Fungsi pada PL/SQL adalah block yang dapat mengembalikan nilai. Dalam pembuatanya menggunakan statement RETURN untuk proses pengembalian nilai.

Bentuk umum dari fungsi pada PL/SQL
Bentuk umum dari fungsi adalah :
CREATE OR REPLACE FUNCTION nama_fungsi
(parameter1 tipe_data,...)
RETURN tipedata_fungsi IS
variable_lokal
BEGIN
statement;
...
RETURN nilai_fungsi;
END;
               
Teorinya sepertinya cukup itu, silahkan teman-teman perdalam kembali. Sekarang mari kita implementasikan, ini yang penting nya bukan. Let go …
Sekarang mari kita buat satu function dengan nama FungsiKartuKredit 

Gambar diatas menggambarkan pembuatan function dalam HeidiSQL dan itu cukup praktis menurut saya.

Nah fungsi udah dibuat mari kita panggil untuk tahu hasilnya, berikut query nya :
select FungsiKartuKredit(200000)

dan  hasilnya adalah tadammmm : 


Kalau kita jeli dan sudah paham dengan stored procedure di pembahasan sebelumnya tentu ini tidak akan sulit. Perbedaan nya di fungsi ada istilah RETURN sedangkan di Stored Procedure menggunakan SET.
Mari kita lihat perbedaan nya dalam query :

Function
CREATE FUNCTION(nilai int)
BEGIN
if nilai < 200000 then return 'silver';
elseif nilai >=200000 and nilai < 300000 then return 'gold';
elseif nilai >=300000 then return 'platinum';
end if;
END

Procedure
CREATE PROCEDURE(nilai int)
BEGIN
declare jenis varchar(20);
if nilai < 200000 then set jenis = 'silver';
else if nilai >=200000 and nilai < 300000 then set jenis= 'gold';
else if nilai >=300000 then set jenis = 'platinum';
end if;
select jenis;
END
 
 
Dan sepertinya postingannya cukup sampai disini dulu yaa. Ada kegiatan yang harus dilakukan soalnya. Semoga bermanfaat. Bye..




Rabu, 10 Desember 2014

Store Procedure part.3

Haloooo. Karena dipostingan sebelumnya udah dibahas tuh mengenai store procedure jadi mari uji kemampuan kita dengan mengerjakan soal di bawah ini. Mariiiii caw :D

Soal :
Buat store procedure insert, update, delete kemudian tampilkan. Bikin satu store procedure menggunakan CASE dimana didalamnya ada variable keterangan yang berisi informasi mengenai insert data, update data maupun delete data.

Itu soalnya tuh, mari kita coba kupas tuntas jawabannya yaaa
1.       Buat  tabel baru yaitu tabel identitas siswa, didalamnya terdapat id, nim, nama sama alamat.
Check gambar buat liat lebih jelasnya.


2.       Selanjutnya, Buat store procedure insertidentitas
k


Setelah dibuat mari mencoba memanggil procedure untuk memasukan data.

Hasilnya adalah tarammm data udah masuk dan dapat dilihat juga di identitassiswa 



3.       Buat insert udah tuh, sekarang mari buat store procedure  buat updateidentitas. 


Udah dibuat kan procedurenya sekarang mari kita uji coba dengan Update data salah satu data yang sudah ada. 


Hasilnya taramm  bisa diliat di tabel identitassiswa, cara nampilin tau kan querynya tinggal contek gambar aja deh :D 


4.       Selanjutnya mari buat store procedure deleteidentitas 


Buat tau apakah store procedure berfungsi mari kita coba untuk hapus data tau dong manggil procedure gimana,  


Hasilnya tarammm datanya berkurang kan? Artinya procedure delete berhasil dieksekusi. 


5.       Buat store procedure tampildata kemudian call nama prosedurnya 


Hasilnya identitas tertampilkan ngga usah ribet masuk dulu ke tabel identitassiswa kan jadinya 

6.                                                                                                                                                                                                                                                                                                                                   Nah ini nih point penting dari latihan kita yaitu manggil procedure – procedure yang udah dibuat tadi dari satu procedure baru. Langkahnya sama saja mari Buat procedure dengan nama CASE kemudian didalamnya buatlah parameter nim, nama, alamat serta tambahkan pula Keterangan. Karena disini kita manggil prosedure maka source code nya adalah seperti ini ..

BEGIN
CASE ket
WHEN 'insert'  THEN call Insertidentitas(nimm, namaa, alamatt);
WHEN 'update'  THEN call Updateidentitas(nimm, namaa, alamatt);
WHEN 'delete'  THEN call Deleteidentitas(nimm);
else call tampilIdentitas;
end CASE;
END

Procedure case udah dibuat dan mari kita testing :
Pertama uji dengan Ketika dipilih Insert, maka hasilnya procedure insert dipanggil dan data masuk.
CALL Caseidentitas('insert', '1127050097', 'Nadia', 'Banjar') 



Kedua kita coba testing dengan cara ketikan  update seperti ini. Untuk hasilnya bisa lihat digambar.
CALL Caseidentitas('update', '1127050098', 'Mia Amalia', 'Tasikmalaya') 

Selamnjutnya kita coba testing ketikan delete
CALL Caseidentitas('delete', '1127050118', '', '') 
Ketika menginsertkan selain insert, update, delete
CALL Caseidentitas('asal', '', '', '')  
 
 

Karena soal yang ada sudah terjawab kita sudahi dulu yaa disini. Mudah-mudahan bermanfaat yaa. Bye :D

Store Procedure part.2

Haloo kembali :D
Langsung saja kita lanjutkan nambah pengetahuan tentang stored procedure. Dalam pembahasan kali ini akan dibahan mengenai Percabangan (IF ELSE serta CASE) dalam stored procedure. Penasaran??? Saya sarankan baca dulu materi nya, tapi yakin kok kalau yang mau ngebahas stored procedure pasti setidaknya tau algoritma Percabangan. Mari mulaiiii …
1.      
     Pernyataan IF
Struktur statement :

Mari kita coba implementasikan dengan membuat procedure Kondisi1, dengan query sebagai berikut :
CREATE PROCEDURE kondisi1(na double, OUT indeks char(1))
BEGIN
IF na>=80 THEN SET indeks='A';
ELSEIF na>=68 THEN SET indeks='B';
ELSEIF na>=56 THEN SET indeks='C';
ELSEIF na>=45 THEN SET indeks='D';
ELSEIF na>=0 THEN SET indeks='E';
ELSE SET indeks='T';
END IF;
END

Mari lakukan pemanggilan :
Call kondisi1(‘80’)

Hasilnya setelah dieksekusi adalah tadammm :


2.      Pernyataan CASE
Struktur Statement :

Mari kita coba implementasikan dengan membuat store procedure CASE, query nya sebagai berikut :
CREATE PROCEDURE CASE(indeks char(1))
BEGIN
declare ket VARCHAR(20);
SET indeks = UPPER(indeks);
CASE indeks
WHEN 'A' THEN SET ket='sangat baik';
WHEN 'B' THEN SET ket='baik';
WHEN 'C' THEN SET ket='cukup';
WHEN 'D' THEN SET ket='kurang';
WHEN 'E' THEN SET ket='sangat kurang';
else set ket='tidak valid';
end CASE;
select ket;
END

Mari lakukan pemanggilan :
Call case(‘A’)

Hasilnya setelah dieksekusi adalah tadammm :

Yahh cukup sekian dulu, semoga bermanfaat yaa. Bye ^_^