Caesar Cipher

6 Agustus 2007 pada 15:49 | Ditulis dalam I.T., Programming | 21 Komentar
Kaitkata: , , ,

Iseng-iseng aku mo mbahas tentang caesar cipher. Caesar Cipher merupakan salah satu bentuk kriptografi. Dan merupakan salah satu model dari bentuk Kriptografi Simetris atau konvensional. Yang dimaksud dengan Symetric Cryptography atau Kriptografi Simetris yaitu kunci yang digunakan untuk melakukan enkripsi dan dekripsi adalah sama.
* Plaintext adalah pesan yang dikirim dan mudah untuk dimengerti.
* Ciphertext adalah plaintext yang sudah diubah dengan metode tertentu sehingga perlu usaha khusus untuk dapat mengerti isinya.
* Agar data yang telah di enkripsi tersebut dapat dibaca kembali maka perlu di dekripsi dengan menggunakan kunci bersama yang sama dengan saat dilakukan enkripsi. Jadi kunci bersama (public key) merupakan aturan yang berlaku saat dilakukan enkripsi dan dekripsi.

Baberapa contoh enkripsi konvensional klasik:
1. CAESAR CIPHER
Merupakan metode enkripsi yang dilakukan pada zaman Julius Caesar. Hanya dipergunakan pada Alfabet baik huruf kapital maupun huruf kecil. Sehingga ketika proses yang dilakukan pada angka maka hal tersebut tidak dapat dilakukan. Cara enkripsi dari metode ini yaitu dengan memutar sejauh tiga langkah. Bentuk dari enkripsi ini adalah sbb:
a b c d e f g h i j k l m n o p q r s t u v w x y z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

2. ROT-13
Yaitu suatu metode enkripsi dengan cara memnukarkan huruf sejauh 13 huruf. Bentuk dari metode enkripsi ini adalah sbb:
a b c d e f g h i j k l m
n o p q r s t u v w x y z

Contoh Caesar Cipher:
Misalnya menggunakan caesar cipher dengan pergeseran 3 huruf:
Plaintext: KOPLER akan dienkripsi menjadi Ciphertext : NRSOHU

Contoh menggunakan ROT 13:
Plaintext : KOPLER akan dienkripsi menjadi Ciphertext : XBCYRE

Pada dasarnya ROT-13 adalah Caesar Cipher dengan pergeseran sejauh 13 huruf, jadi ingat masa lalu waktu ikut kegiatan pramuka di sekolah, ada sandi yang seperti ini. Dalam ilmu ke-PRAMUKA-an enkripsi ini sering disebut dengan “Sandi AN” karena huruf AN dijejerkan di bawahnya untuk memecahkannya.
Dengan menggunakan Pemrograman, tentulah sangat mudah untuk memecahkan maupun membentuk ciphertext dengan pola enkripsi seperti ini. Tidak masalah mau menggunakan pergeseran huruf sejauh berapapun.


Program aplikasi .exe dapat di download di [CaesarChiper.exe]

Algoritma Pemrogramannya:
1. Hitung panjang karakter/huruf.
2. Tiap-tiap huruf diubah menjadi kode ASCII menggunakan proses looping.
3. Untuk melakukan pergeseran/proses enkripsi maka kode ASCII tersebut digeser
dengan cara ditambah sebanyak pergeseran. Misalnya pergeseran 3huruf maka kode ASCII ditambah dengan 3.
4. Jika ditemui spasi (ASCII=32), maka tidak usah dilakukan penambahan.
5. Hasil pergeseran/penambahan bilangan ASCII dikembalikan lagi menjadi karakter.

Connector /J

8 Februari 2007 pada 08:06 | Ditulis dalam I.T., Programming | 12 Komentar
Kaitkata: ,

Hufff,,,,, setelah hampir 4 jam-an mikir2 sampai mumet, akhirnya jadi jugga. Menyebalkan,,,, cuma gara2 kesalahan PATH dan connector/J. Tapi script-nya jugga ada yang salah sie :P Bermula dari liat2 java dan kegemaran terhadap database mySQL (ceileee :D ) akhirnya penasaran juga otak-atik java+mySQL. Setelah itu nyari2 tutorial mengenai koneksi java dan mySQL, nemu istilah2 mmmysql(M3YSQL), JDBC-ODBC Bridge, MySQL Connector/J JDBC Driver de el el. Gak mantap jika kita langsung membuat suatu program tanpa tau konsepnya.

1. JDBC
JDBC sering disebut sebagai singkatan dari Java Database Connectivity, JDBC adalah sebuah nama yang diberikan terhadap java API (Application Program Interface) yang digunakan untuk melakukan akses terhadap data yang tersimpan di Database. JDBC sangat berguna untuk melakukan 3 aktifitas berikut:
a. Connect ke data source / database
b. Mengirimkan queries dan update statements ke database
c. Melakukan penerimaan dan proses terhadap hasil query yang kita kirim.

JDBC merupakan jembatan penghubung antara DBMS (Database Management System) dengan Aplikasi JAVA yang kita buat.
JDBC

2. MySQL Connector /J
MySQL Connector/J adalah sebuah driver yg juga untuk koneksi Java dgn MySQL melalui JDBC driver.

Ok, cukup konsepnya, klo mo tau lebih banyak silahkan cari sendiri :P
Yang diperlukan untuk membuat program ini adalah j2sdk, mysql-server dan mysql-connector-j. Connector /J dapat diunduh disitus resmi mysql (http://www.mysql.com/downloads) dan j2sdk dapat diperoleh di situsnya sun (http://java.sun.com/). Untuk editor bisa menggunakan notepad, tapi kalo aku sih pake EditPlus dan Eclipse. Saat membuat ini, aku pake j2sdk1.4.1_02, MySQL 4.1.14, mysql-connector-java-3.1.13-bin.jar.

a. Install mysql-connector/J
Cari dan unduh mysql-connector-java-.zip, kemudian ekstrak. Yang dibutuhkan hanyalah file mysql-connector-java–bin.jar. Copy file tersebut ke direktori lib java (milikku di C:\j2sdk1.4.1_02\lib), pastikan direktori tersebut sudah diset PATH-nya. Untuk memastikan sudah atau belum, cek di command promt dengan command PATH.

D:\kopler>PATH
PATH=C:\Program Files\Borland\Delphi7\Bin;C:\Program Files\Borland\Delphi7\Proje
cts\Bpl\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\apache2triad
\bin;C:\apache2triad\perl\bin;C:\apache2triad\php\bin;C:\apache2triad\mysql\bin;
C:\apache2triad\opssl\bin;C:\apache2triad\python\bin;C:\apache2triad\pgsql\bin;C
:\j2sdk1.4.1_02\bin\;C:\j2sdk1.4.1_02\jre\lib\;C:\j2sdk1.4.1_02\lib\;C:\tools\nm
ap3.95;

Diatas, terlihat bahwa C:\j2sdk1.4.1_02\lib\ sudah masuk dalam PATH. jika belum ada maka tinggal menambah dengan cara: klik kanan pada myComputer->properties->tab Advanced->klik Environment Variables->pada System Variables,edit path->dan tambahi direktorinya.


b. Database Yg Dipakai.

Ini adalah contoh database yang kugunakan (dbname=hotel, table=karyawan)

mysql> use hotel
Database changed
mysql> desc karyawan;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id_petugas | int(4)      |      | PRI | 0       |       |
| nama       | varchar(25) |      |     |         |       |
| jabatan    | varchar(10) |      |     |         |       |
| alamat     | varchar(25) |      |     |         |       |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> select * from karyawan;
+------------+---------------+------------+-----------------------+
| id_petugas | nama          | jabatan    | alamat                |
+------------+---------------+------------+-----------------------+
|          1 | Paijo Suparjo | receptioni | jalan bandung 56      |
|          2 | Suparman      | bell boy   | jalan berliku 43      |
|        100 | Anjelie       | Koki       | jalan jalan ke kota 7 |
+------------+---------------+------------+-----------------------+
3 rows in set (0.00 sec)

c. Program Java
Berikut ini adalah source code-nya, dan beri nama basisd.java

import java.sql.*; //import paket sql
class basisd {

public static void main(String []args) {
  //Panggil Driver JDBC
  try {
	Class.forName("com.mysql.jdbc.Driver");
	System.out.println("Sukses Driver JDBC ditemukan ....");

        //Melakukan koneksi dengan Database
	try {
	  String url = "jdbc:mysql://localhost:3306/hotel?user=root&password=kopler";
	  Connection konek = DriverManager.getConnection(url);
	  System.out.println("Sukses Koneksi ....");
	  Statement kopler=konek.createStatement();        //membuat statemen
	  String sintak="select nama,jabatan from karyawan";
	  ResultSet hasil=kopler.executeQuery(sintak);
	  while (hasil.next()){
		System.out.println("Nama: "+hasil.getString(1));
		System.out.println("Jabatan: "+hasil.getString(2));
	  }
	  kopler.close();  //nutup statement
	  konek.close(); //nutup koneksi JDBC
	}
	// Gagal Koneksi dengan Database
	catch (SQLException se) {
	  System.out.println("Koneksi Gagal = " + se);
	  System.exit(0);
	}
  }
  // Gagal Memanggil Driver JDBC
  catch (ClassNotFoundException cnfe) {
	System.out.println("Class tidak ditemukan.. Error : " + cnfe);
	System.exit(0);
  }
} // Akhir methode koneksiDatabase()


}

Lalu compile dan jalankan, maka hasilnya adalah sebagai berikut,,,,

(en)/(de)crypt md5

17 Januari 2007 pada 08:01 | Ditulis dalam I.T., Programming | Tinggalkan Komentar
Kaitkata: , , ,

Sistem enkripsi, sangat dibutuhkan sekali untuk pengamanan data. Terlebih lagi untuk pengamanan sebuah password. MD5 merupakan salah satunya,,,,
MD5 (Message-Digest algortihm 5) ialah fungsi hash kriptografik yang digunakan secara luas dengan hash value 128-bit. MD5 merupakan proses enkripsi secara satu arah. Yang sangat kecil kemungkinannya untuk di-decrypt. Namun telah ditemukan algoritma untuk men-decrypt hasil encrypt md5. Itupun kemungkinan paling besar adalah 3 huruf pertama. Tapi situs http://milw0rm.com/ dapat melakukan decrypt md5 secara tepat. Awalnya aku gak percaya tapi setelah kucaba sendiri akhire percaya :D Bahkan cuma di pecahkan hanya dalam waktu 53 detik hahaha…

Iseng2 pake PHP lewat DOS.

D:\kopler>edit kopler.php

D:\kopler>type kopler.php


D:\kopler>php kopler.php
25b7e3900dc9f6f02df48fb8b4484561

Jadi md5 dari “kopler” adalah 25b7e3900dc9f6f02df48fb8b4484561

teros masukkan hasil md5 ke situs http://milw0rm.com/cracker. Hasil encrypt bisa di decrypt tergantung dari kata yang kita gunakan (password strengh).
Tak liat 1menit kemudian, ternyata passwordku gak kuat dan bisa dipecahkan dalam tempo 53detik. :P

http://milw0rm.com/cracker/list.php

Entahlah, bagaimana caranya koq bisa ketemu, apakah karena kamusnya milw0rm lengkap atau memang ada algoritma tersendiri…..?????????

Liburan bersama PERL

6 Juli 2006 pada 05:08 | Ditulis dalam Programming | 3 Komentar
Kaitkata:


Hore-hore libur…..
Karena liburan mo memperdalam pemrograman yang namanya perl. Bukan karena logonya seperti itu truz aku milih belajar perl :D Alasan [1]Karena perl bahasa pemrograman yang mirip dengan c++ dan hampir mendekati php. Kalo udah mahir dasarnya so tinggal mempelajari function-nya aja. Alasan [2] kayaknya lebih asyik daripada shell programming yang ada di linux, alasan [3] mo mempelajari yang namanya socket programming. Itu sih menurutku, menurut yg lain… emang gw pikirin. Yok kita mulai dasarnya’ :D

Perl diciptakan oleh Larry Wall yang dibuat dari bahasa C, yang tujuan awalnya untuk mempermudah administrasi di sistem *nix (liat di toko buku,tapi g beli :D ) Perl khusus dirancang untuk manipulasi data text.

Yang dibutuhkan untuk pemrograman ini, kalo di windows biasanya active perl, kalo di linux biasanya sudah include tapi kalo g ada ya cari aja di google truz di install ;p
Untuk sistem *nix diawal program bisa di kasih argumen

#!/usr/bin/perl

agar program dapat dieksekusi secara langsung, kalo di win gak usah deh…
Contoh di bawah ini menggunakan perl di windows.

Contoh 1: halo.pl

print "Masukkan nama=";
$nama=<STDIN>;
print "Halo $nama!";

Hasilnya:
perl1
Lho koq seperti itu hasilnya?
Tentu saja karena <STDIN> juga melakukan input terhadap baris sesudah teks yang kita ketikkan (jadi yang terbaca di $nama adalah sarah \n bukan sarah) karena itu perlu di tambahkan sebuah fungsi untuk menghilangkannya, yaitu

chomp()

sehingga programnya menjadi:
Contoh 2: halo2.pl

print "Masukkan nama=";
$nama=<STDIN>;
chomp $nama;
print "Halo $nama!";

dan hasilnya:
perl2

Contoh3: halo3.pl Langsung aja ditambah if, elsif, else, while dan array

@kumpulanrhs=("moklet","sewelas","studio");
print "Masukkan nama=";
$huruf=<STDIN>;
chomp $huruf;
if ($huruf eq "miftakh") {
	print "$huruf kamu cakep deh\n";
}
else {
	print "sugeng rawuh $huruf ";
	#$rhs="menghilang";
	printf "Masukkan kata rahasia=";
	$rahasia=<STDIN>;
	chomp $rahasia;
	$i=0;
	$katakunci="otre";
	while ($katakunci eq "otre") {
		if ($kumpulanrhs[$i] eq $rahasia) {
			$katakunci="yess";
			#print "$i";
		}
		elsif ($i<2) {
			$i=$i+1;
		}
		else {
		printf "Sori bro salah.";
		printf "Masukkan lagi=";
		$rahasia=<STDIN>;
		chomp $rahasia;
		$i=0;
		}

	}
}

Seperti apa hasilnya? Coba sendiri donkzzzz :D :D

Tapi tak kasih penjelasan dulu:
@kumpulanrhs ==> adalah sebuah array, tanda @ menunjukkan tanda array

if ($huruf eq "miftakh") ==> kondisi if, sedangkan eq adalah equivalen atau "=" dan lawannya adalah ne yaitu not equivalen

while ($katakunci eq "otre") ==> pengulangan while, jika kondisinya terpenuhi maka akan terus terjadi looping

Demikian yang dapat ku berikan, silahkan di kembangkan sendiri….

Blog pada WordPress.com. | Tema: Pool oleh Borja Fernandez.
Tulisan dan komentar feeds.

Ikuti

Get every new post delivered to your Inbox.