<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rumah Penguin &#187; Programming</title>
	<atom:link href="http://www.rumahpenguin.web.id/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rumahpenguin.web.id</link>
	<description>Rumahnya Penguin. Masa gitu aja perlu dijelasin?</description>
	<lastBuildDate>Sat, 04 Feb 2012 08:26:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Proyek MD5Fivers BETA</title>
		<link>http://www.rumahpenguin.web.id/programming/proyek-md5fivers-beta/</link>
		<comments>http://www.rumahpenguin.web.id/programming/proyek-md5fivers-beta/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 07:28:00 +0000</pubDate>
		<dc:creator>Penguin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.penguin.atbhost.net/uncategorized/proyek-md5fivers-beta/</guid>
		<description><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/proyek-md5fivers-beta/" title="Proyek MD5Fivers BETA"></a>Nah, setelah lama nggak posting, sekarang gw mau posting tapi bukan tentang opini, tapi iklan untuk salah satu aplikasi buatan gw sendiri: MD5Fivers versi BETA.Apa itu MD5? MD5 merupakan salah satu teknik perhitungan hash yang sering digunakan sekarang ini. Cari &#8230;<p class="read-more"><a href="http://www.rumahpenguin.web.id/programming/proyek-md5fivers-beta/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/proyek-md5fivers-beta/" title="Proyek MD5Fivers BETA"></a><p>Nah, setelah lama nggak posting, sekarang gw mau posting tapi bukan tentang opini, tapi iklan untuk salah satu aplikasi buatan gw sendiri: MD5Fivers versi BETA.<br />Apa itu MD5? MD5 merupakan salah satu teknik perhitungan hash yang sering digunakan sekarang ini. Cari di Wikipedia untuk penjelsan lebih lanjut.<br />Tapi berhubung bukan untuk umum (masih versi BETA soalnya) jadi gw cuma ngasih ke orang yang kirim email ke gw di nitenightknight@yahoo.com.<br />Yah, cuma mau memberitahu itu saja kok.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rumahpenguin.web.id/programming/proyek-md5fivers-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pembahasan: Kriptografi</title>
		<link>http://www.rumahpenguin.web.id/programming/pembahasan-kriptografi/</link>
		<comments>http://www.rumahpenguin.web.id/programming/pembahasan-kriptografi/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 04:11:00 +0000</pubDate>
		<dc:creator>Penguin</dc:creator>
				<category><![CDATA[Pembahasan]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.penguin.atbhost.net/uncategorized/pembahasan-kriptografi/</guid>
		<description><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/pembahasan-kriptografi/" title="Pembahasan: Kriptografi"></a>Nah, berhubung ternyata gak ada yang ngebahas soal gw, gw jadi terdorong untuk ngebahas soal gw sendiri yang tentang kriptografi. Positif thinking aja, mungkin anak-anak osn kompi lain lagi sibuk menghadapi nasib&#8230; eh, pelatnas. Kenapa gw bahas soal ini di &#8230;<p class="read-more"><a href="http://www.rumahpenguin.web.id/programming/pembahasan-kriptografi/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/pembahasan-kriptografi/" title="Pembahasan: Kriptografi"></a><p>Nah, berhubung ternyata gak ada yang ngebahas soal gw, gw jadi terdorong untuk ngebahas soal gw sendiri yang tentang kriptografi. Positif thinking aja, mungkin anak-anak osn kompi lain lagi sibuk menghadapi nasib&#8230; eh, pelatnas.</p>
<p>Kenapa gw bahas soal ini di blog gw sendiri dan bukannya di blog osn kompi? Yah, alasannya sederhana aja, gw cuma mau mempromosikan blog gw ini. Jadi jangan marah yaaa&#8230;</p>
<p>Oke, kita mulai pembahasan ini dengan melihat contoh testcase kita:<br />Input:<br />agung<br />keren<br />agung<br />cool<br />agung utama<br />ganteng</p>
<p>Output:<br />KKLRT<br />CUIYI<br />GGHGK ATNFE</p>
<p>Algoritma kriptografi ini (yang notabane disebut &#8220;Vigenere Chiper&#8221;) untuk dipemograman sebenatnya sederhana:<br />1. Input plain text.<br />2. Input sandi.<br />3. Rubah huruf pertama plain text dengan huruf pertama sandi sesuai tabel.<br />4. Kalau bertemu spasi, jangan di proses, dan sandi dimulai lagi dari huruf pertama.<br />5. Kalau sudah sampai ke huruf akhir sandi, kembalikan ke huruf pertama sandi.<br />Baca soal lagi kalau tidak mengerti dengan algoritmanya.</p>
<p>Gak sulit kan? Tapi yang terlihat ternyata tidak semudah kelihatannya. Coba lihat lagi poin ke 3. Kita diminta mencocokan dengan tabel. Sekedar cerita, dulu gw bikin kodenya pakai array 2 dimensi, jadi keluaran sandi[huruf plain, huruf sandi] adalah hasilnya. Cara ini bisa dibuat untuk enkripsi, tapi gimana dengan dekripsi? Silahkan coba sendiri.</p>
<p>Kalau pakai array juga memakan memori banyak. Satu variabel char sudah 1 byte. Kalau ada 26 huruf berarti ada 26 X 26 variabel char (676 variabel). Kelihatannya sedikit, tapi tidak efektif. Jadi marilah kita tinggalkan cara ini.</p>
<p>Coba perhatikan tabel kriptografi ini. Kalau diperhatikan, sebenarnya chiper text merupakan hasil increment dari plain text. contoh: &#8216;A&#8217; dengan sandi &#8216;A&#8217; menghasilkan &#8216;A&#8217; lagi. &#8216;A&#8217; dengan sandi &#8216;B&#8217; menghasilkan &#8216;B&#8217;. Kalau &#8216;F&#8217; dengan sandi &#8216;L&#8217; akan menghasilkan &#8216;Q&#8217; (huruf &#8216;F&#8217; naik sebanyak &#8216;L&#8217; &#8211; 1 kali).</p>
<p>Sekarang, dalam pascal kita bisa tulis:<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span><br />var<br />  input  : string;    //variabel untuk plain text<br />  sandi  : string;    //variabel untuk sandi<br />  i,j,k  : byte;    //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi</p>
<p>begin<br />repeat        //untuk perulangan</p>
<p>readln(input);        //input plain<br />if input = &#8221; then exit;    //kalau kosong, selesai</p>
<p>readln(sandi);        //input sandi</p>
<p>j := length(sandi);        //simpan panjang sandi<br />input := upcase(input);    //jadikan input huruf besar<br />sandi := upcase(sandi);    //jadikan sandi huruf besar<br />k := 1;            //simpan huruf ke berapa sandi akan dipakai</p>
<p>for i := 1 to length(input) do<br /> begin<br />  if input[i] = &#8216; &#8216; then begin k := 1; continue; end;<br />  //kalau huruf spasi, jangan diproses<br />  input[i] := chr( ord(input[i]) + ord(sandi[k]) &#8211; 65 );<br />  //huruf input dinaikan sebanyak huruf sandi dikurangi 65(ASCII dari &#8216;A&#8217;)<br />  if ord(input[i]) > ord(&#8216;Z&#8217;) then<br />   input[i] := chr( ord(input[i]) &#8211; 26 );<br />  //Kalau lebih dari Z maka kurangi 26 huruf<br />  k := k + 1;<br />  //Gunakan huruf sandi berikutnya<br />  if k > j then k := 1;<br />  //Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama<br /> end;</p>
<p>writeln(input); //cetak hasilnya</p>
<p>until input = &#8221;;</p>
<p>end.<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span></p>
<p>Dari logika tadi, maka untuk mendekrip bisa kita rubah sedikit kodenya. Dimana setiap simbol dibalik.<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span><br />var<br />  input  : string;    //variabel untuk plain text<br />  sandi  : string;    //variabel untuk sandi<br />  i,j,k  : byte;    //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi</p>
<p>begin<br />repeat        //untuk perulangan</p>
<p>readln(input);        //input plain<br />if input = &#8221; then exit;    //kalau kosong, selesai</p>
<p>readln(sandi);        //input sandi</p>
<p>j := length(sandi);        //simpan panjang sandi<br />input := upcase(input);    //jadikan input huruf besar<br />sandi := upcase(sandi);    //jadikan sandi huruf besar<br />k := 1;            //simpan huruf ke berapa sandi akan dipakai</p>
<p>for i := 1 to length(input) do<br /> begin<br />  if input[i] = &#8216; &#8216; then begin k := 1; continue; end;<br />  //kalau huruf spasi, jangan diproses<br />  input[i] := chr( ord(input[i]) &#8211; ord(sandi[k]) + 65 );<br />  //huruf input diturunkan sebanyak huruf sandi ditambah 65(ASCII dari &#8216;A&#8217;)<br />  if ord(input[i]) <> j then k := 1;<br />  //Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama<br /> end;</p>
<p>writeln(input); //cetak hasilnya</p>
<p>until input = &#8221;;</p>
<p>end.<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span></p>
<p>Sebenarnya untuk tugas yang sekarang kode ini sudah cukup, karena testcase sudah pasti tidak memiliki karakter lain selain alphabet dan spasi. Tapi sebenarnya dalam Vigenere Chiper, ada kemungkinan kalau input memiliki karakter khusus (seperti &#8220;&#8216;!@#$%^&amp;* dll). Maka, ada baiknya kita melakukan pengecualian proses untuk karakter-karakter tersebut. Kalau gw lebih suka pakai tipe set.<br />var<br />  &#8230;..<br />  himp : Set of char;<br />  &#8230;..</p>
<p>jadi kode enkrip:<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span><br />var<br />  input  : string;    //variabel untuk plain text<br />  sandi  : string;    //variabel untuk sandi<br />  i,j,k  : byte;    //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi<br />  himp   : Set of char //variabel himpunan karakter yang diizinkan</p>
<p>begin<br />repeat        //untuk perulangan</p>
<p>readln(input);        //input plain<br />if input = &#8221; then exit;    //kalau kosong, selesai</p>
<p>readln(sandi);        //input sandi</p>
<p>j := length(sandi);        //simpan panjang sandi<br />input := upcase(input);    //jadikan input huruf besar<br />sandi := upcase(sandi);    //jadikan sandi huruf besar<br />himp  := ['A'..'Z'];        //krakter yang diizinkan dari A sampai Z<br />k := 1;            //simpan huruf ke berapa sandi akan dipakai</p>
<p>for i := 1 to length(input) do<br /> begin<br />  if input[i] = &#8216; &#8216; then begin k := 1; continue; end;<br />  //kalau huruf spasi, jangan diproses<br />  if not(input[i] in himp) then continue;<br />  //kalau tidak termasuk huruf yang diizinkan, jangan diproses<br />  input[i] := chr( ord(input[i]) + ord(sandi[k]) &#8211; 65 );<br />  //huruf input dinaikan sebanyak huruf sandi dikurangi 65(ASCII dari &#8216;A&#8217;)<br />  if ord(input[i]) > ord(&#8216;Z&#8217;) then<br />   input[i] := chr( ord(input[i]) &#8211; 26 );<br />  //Kalau lebih dari Z maka kurangi 26 huruf<br />  k := k + 1;<br />  //Gunakan huruf sandi berikutnya<br />  if k > j then k := 1;<br />  //Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama<br /> end;</p>
<p>writeln(input); //cetak hasilnya</p>
<p>until input = &#8221;;</p>
<p>end.<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span></p>
<p>dan dekrip:<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span><br />var<br />  input  : string;    //variabel untuk plain text<br />  sandi  : string;    //variabel untuk sandi<br />  i,j,k  : byte;    //variabel untuk (i)iterasi, (j)panjang sandi, dan (k)hurufsandi<br />  himp   : Set of char //variabel himpunan karakter yang diizinkan</p>
<p>begin<br />repeat        //untuk perulangan</p>
<p>readln(input);        //input plain<br />if input = &#8221; then exit;    //kalau kosong, selesai</p>
<p>readln(sandi);        //input sandi</p>
<p>j := length(sandi);        //simpan panjang sandi<br />input := upcase(input);    //jadikan input huruf besar<br />sandi := upcase(sandi);    //jadikan sandi huruf besar<br />himp  := ['A'..'Z'];        //krakter yang diizinkan dari A sampai Z<br />k := 1;            //simpan huruf ke berapa sandi akan dipakai</p>
<p>for i := 1 to length(input) do<br /> begin<br />  if input[i] = &#8216; &#8216; then begin k := 1; continue; end;<br />  //kalau huruf spasi, jangan diproses<br />  if not(input[i] in himp) then continue;<br />  //kalau tidak termasuk huruf yang diizinkan, jangan diproses<br />  input[i] := chr( ord(input[i]) &#8211; ord(sandi[k]) + 65 );<br />  //huruf input diturunkan sebanyak huruf sandi ditambah 65(ASCII dari &#8216;A&#8217;)<br />  if ord(input[i]) <> j then k := 1;<br />  //Kalau lebih panjang dari sandi itu sendiri, kembalikan ke huruf pertama<br /> end;</p>
<p>writeln(input); //cetak hasilnya</p>
<p>until input = &#8221;;</p>
<p>end.<br /><span style="font-weight: bold;">////////////////////////////////////////////////////////</span><br />Sekarang, kita sudah benar-benar selesai dengan Vigenere Chiper.</p>
<p>Yah, pambahasan ini masih banyak kelemahannya. Pertama, mungkin kurang jelas. Kedua, gw terlalu ganteng (gak nyambung, oon!). Gw menerima segala kritik, saran, dan pujian dari siapa saja (siapa yang mau muji?). Terima Kasih atas perhatiannya, semoga anda yang memperhatikan selalu berbahagia dan yang tidak memperhatikan selalu sengsara (??).</p>
<p>Pembahasan tentang IP converting masih di proses.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rumahpenguin.web.id/programming/pembahasan-kriptografi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Soal Pemograman Pascal : IP Converting</title>
		<link>http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-ip-converting/</link>
		<comments>http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-ip-converting/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 10:03:00 +0000</pubDate>
		<dc:creator>Penguin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Soal]]></category>

		<guid isPermaLink="false">http://www.penguin.atbhost.net/uncategorized/soal-pemograman-pascal-ip-converting/</guid>
		<description><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-ip-converting/" title="Soal Pemograman Pascal : IP Converting"></a>Soal ini juga pernah gw terbitin di http://osn08kom.blogspot.com Tau gak IP address?? Kalau bahasa umumnya, IP address itu seperti alamat rumah kita didunia maya. Dengan IP address kita bisa dikenal di internet saat browsing, chatting, dll. Tapi tau gak kalau &#8230;<p class="read-more"><a href="http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-ip-converting/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-ip-converting/" title="Soal Pemograman Pascal : IP Converting"></a><p>Soal ini juga pernah gw terbitin di http://osn08kom.blogspot.com</p>
<p>Tau gak IP address?? Kalau bahasa umumnya, IP address itu seperti alamat rumah kita didunia maya. Dengan IP address kita bisa dikenal di internet saat browsing, chatting, dll. Tapi tau gak kalau sebenarnya kita bisa menentukan lokasi komputer cuma dari alamat IP nya? Bagi yang tau tentang IP, pasti tau dong kalau kita bisa mengecek asal IP address dengan mengunjungi situs tertentu atau dengan aplikasi bantuan. Kita fokus tentang situsnya.</p>
<p>Situs yang bisa menginformasikan asal IP address ada banyak (googling aja sendiri!) tapi metodenya sama: mencocokan suatu IP address dengan database. Nah, disini masalah databasenya: IP address terbagi kedalam 4 sub-block. Kalau tiap sub-block harus dicocokan, bisa repot.</p>
<p>Karena itu database ini memakai cara yang lain, yaitu dengan menghitung IP number dari IP address tersebut baru dicocokan dengan database. Contoh: IP address 202.186.13.4 mempunyai IP number 3401190660. Sebuah negara memiliki range IP number yang berbeda dengan range IP number negara lain. Dengan IP number tadi, diketahui bahwa IP tersebut berasal dari MALAYSIA.</p>
<p>Cara menghitung IP address menjadi IP number begini: anggap keempat blok IP address sebagai w.x.y.z, maka rumusnya</p>
<p>IP Number = 16777216 X w + 65536 X x + 256 X y + z</p>
<p>sehingga perhitungan untuk contoh yang tadi:</p>
<p>IP Number = 16777216 X 202 + 65536 X 186 + 256 X 13 + 4<br />    = 3388997632 + 12189696 + 3328 + 4<br />    = 3401190660</p>
<p>Kemudian databasenya memiliki format seperti ini:</p>
<p>IP Number                           Kode Negara    Nama Negara<br />3401023488..3401056255        TH              THAILAND<br />3401056256..3401400319        MY            MALAYSIA<br />3401408512..3401416703        HK              HONG KONG<br />3401416704..3401420799        KR             KOREA<br />3401441280..3401449471        PH             PHILIPPINES<br />3401441280..3401515263        MY             MALAYSIA</p>
<p>Bisa dilihat di database diatas kalau MALAYSIA punya 2 range IP number. Tapi karena sama-sama Malaysia, 2 itu dianggap sama. Bisa dilihat juga kalau database sudah mengurutkan alamat IP dari kecil ke besar.</p>
<p><span style="font-weight: bold;">FORMAT MASUKAN</span><br />Diawali dengan sebuah bilangan T dan diikuti dengan T baris database berisi M..N(range IP number),Kode Negara, dan Nama Negara. Sebuah negara bisa memiliki 2 range IP number atau bisa lebih. Lalu sebuah bilangan O (1 <= O <= 100) dan dikuti O buah IP address dengan format w.x.y.z.  <span style="font-weight: bold;">FORMAT KELUARAN</span><br />O buah Kode Negara dan Nama Negara asal IP address. Antara Kode &amp; Nama Negara dipisahkan sebuah spasi.</p>
<p><span style="font-weight: bold;">CONTOH MASUKAN</span><br />6<br />3401023488..3401056255 TH THAILAND<br />3401056256..3401400319 MY MALAYSIA<br />3401408512..3401416703 HK HONG KONG<br />3401416704..3401420799 KR KOREA<br />3401441280..3401449471 PH PHILIPPINES<br />3401441280..3401515263 MY MALAYSIA<br />5<br />202.186.13.4<br />202.183.170.13<br />202.186.13.10<br />202.189.107.17<br />202.189.224.10</p>
<p><span style="font-weight: bold;">CONTOH KELUARAN</span><br />MY MALAYSIA<br />TH THAILAND<br />MY MALAYSIA<br />KR KOREA<br />PH PHILIPPINES</p>
<p>Ehem,ehem. Sori lagi deh, soalnya cuma bikin satu test case. Tapi yang penting kan udah paham caranya. Kalau belum puas dengan soalnya, nih gw tambahin sedikit.</p>
<p>Kalau misalnya kita dikasih suatu IP number, bagaimana caranya untuk mengembalikan ke IP address? Cari sendiri caranya dan dibawah ini test case nya (yang ini bisa bikin banyak).</p>
<p><span style="font-weight: bold;">FORMAT MASUKAN</span><br />x baris IP number dengan jumlah yang tidak ditentukan.</p>
<p><span style="font-weight: bold;">FORMAT KELUARAN</span><br />x baris IP address.</p>
<p><span style="font-weight: bold;">CONTOH MASUKAN</span><br />3401190660<br />3401034253<br />3401190666<br />3401411345<br />3401441290<br />3041441290<br />3092458469<br />3546273834<br />3928475645<br />2839415365<br />3940284945<br />4728394087<br />2849573823<br />3948203887<br />3423432434<br />2123232498<br />2342354623</p>
<p><span style="font-weight: bold;">CONTOH KELUARAN</span><br />202.186.13.4<br />202.183.170.13<br />202.186.13.10<br />202.189.107.17<br />202.189.224.10<br />181.72.182.10<br />184.83.43.229<br />211.95.216.42<br />234.39.199.253<br />169.62.10.69<br />234.219.250.17<br />25.213.145.103<br />169.217.11.191<br />235.84.207.111<br />204.13.110.242<br />126.141.244.242<br />139.157.126.191</p>
<p>Cukup deh. Kalau ada yang perlu ditanyakan, jangan malu untuk ngomong di milis (siapa yang malu?). Sekian, banyak maaf kalau ada salah-salah kata. Happy Programming!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-ip-converting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soal Pemograman Pascal : Kriptografi</title>
		<link>http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-kriptografi/</link>
		<comments>http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-kriptografi/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 09:57:00 +0000</pubDate>
		<dc:creator>Penguin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Soal]]></category>

		<guid isPermaLink="false">http://www.penguin.atbhost.net/uncategorized/soal-pemograman-pascal-kriptografi/</guid>
		<description><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-kriptografi/" title="Soal Pemograman Pascal : Kriptografi"></a>Untuk yang pertama, mungkin ada baiknya gs mengupload soal pemograman, berhubung gw bisanya di bidang ini. Soal ini pernah gw posting ke http://osn08kom.blogspot.com Ada yang tau kriptografi? Bagi yang belum tau, Kriptografi adalah suatu cara untuk menyandikan pesan yang bersifat &#8230;<p class="read-more"><a href="http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-kriptografi/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-kriptografi/" title="Soal Pemograman Pascal : Kriptografi"></a><p>Untuk yang pertama, mungkin ada baiknya gs mengupload soal pemograman, berhubung gw bisanya di bidang ini.</p>
<p>Soal ini pernah gw posting ke http://osn08kom.blogspot.com</p>
<p>Ada yang tau kriptografi? Bagi yang belum tau, Kriptografi adalah suatu cara untuk menyandikan pesan yang bersifat rahasia.</p>
<p>Suatu pesan asli (plain text) menggunakan suatu cara disandikan (encrypt) menjadi pesan yang sulit dibaca (chiper text).</p>
<p>chiper text hanya bisa dibaca setelah dikembalikan ke bentuk plain text (decrypt).</p>
<p>Ada banyak teknik kriptografi yang dipakai, seperti ROT13, RC40, dll. Sekedar informasi, RC40 sering dipakai sebuah program</p>
<p>untuk mengenkripsi file-file di komputer. Sekarang, kita belum akan membahas RC40 (yang cukup sulit), tapi tentang teknik</p>
<p>kriptografi lain yang mirip dengan itu.</p>
<p>Logika enkripsi ini (Gw lupa nama tekniknya) menggunakan kata kunci dan sebuah tabel seperti berikut:<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ipSQdsb3Sfc/SLJ1XF8tupI/AAAAAAAAAAM/NCsX99Zztek/s1600-h/untitled.bmp"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 385px; height: 321px;" src="http://2.bp.blogspot.com/_ipSQdsb3Sfc/SLJ1XF8tupI/AAAAAAAAAAM/NCsX99Zztek/s320/untitled.bmp" alt="" id="BLOGGER_PHOTO_ID_5238378356179581586" border="0" /></a></p>
<p>dan kemudian sebuah kata kunci.</p>
<p>Setiap huruf dari plain text di enkripsi sesuai tabel berdasarkan katakunci. Misalkan huruf pertama plain text adalah &#8216;C&#8217;,</p>
<p>dan huruf pertama sandi adalah &#8216;S&#8217;. Berdasarkan tabel didapat bahwa huruf C jika disandikan dengan S menjadi huruf &#8216;U&#8217;.</p>
<p>Misal diberikan sebuah plain text dan sandi:<br />text : agung<br />sandi: keren<br />bila disandikan<br />a[k]=K<br />g[e]=K<br />u[r]=L<br />n[e]=R<br />g[n]=T<br />menjadi KKLRT.</p>
<p>Bagaimana kalau jumlah huruf sandi lebih sedikit? begini&#8230;<br />text : agung<br />sandi: cool<br />     a[c]=c<br />     g[o]=U<br />     u[o]=I<br />     n[l]=Y<br />huruf berikutnya kembali lagi ke huruf sandi pertama<br />     g[c]=I<br />menjadi CUIYI</p>
<p>Untuk yang lebih dari 2 kata begini caranya:<br />teks :agung utama<br />sandi:ganteng<br />a[g]=G<br />g[a]=A<br />u[n]=A<br />n[t]=G<br />g[e]=K<br />Kata berikutnya kembali lagi dari huruf sandi pertama<br />u[g]=H<br />t[a]=T<br />a[n]=N<br />m[t]=F<br />a[e]=E<br />jadi GAAGK HTNFE (spasi tidak dienkripsi).</p>
<p>PERHATIAN!!! Kata sandi selalu satu kata dan tidak selalu berupa kata yang memiliki arti.</p>
<p>Semua udah ngerti???? Bagus kalau tidak (loh?).</p>
<p>Jadi, untuk tugas pertama dan kedua, coba buat program yang bisa (1) mengenkripsi dan (2) mendeskripsi dengan kriptografi</p>
<p>ini.</p>
<p>Format Input:<br />Dalam satu baris, tulis sebuah plain dan sandinya (untuk enkripsi) dan sebuah chiper dengan sandinya (untuk deskripsi). Input</p>
<p>lebih dari satu baris.</p>
<p>Format Output:<br />Tulis hasilnya dalam satu baris untuk setiap pasang.</p>
<p>Contoh Input Enkripsi:<br />agung keren<br />agung cool<br />agung utama ganteng</p>
<p>Contoh Output Enkripsi:<br />KKLRT<br />CUIYI<br />GAAGK HTNFE</p>
<p>Contoh input Deskripsi:<br />KKLRT keren<br />CUIYI cool<br />GAAGK HTNFE ganteng</p>
<p>Contoh Output Deskripsi:<br />agung<br />agung<br />agung utama</p>
<p>PERHATIAN LAGI!!! Plain texr dan sandi ditulis dalam huruf kecil dan chiper ditulis huruf besar.</p>
<p>Ini cuma tantangan kecil, pasti banyak yg bisa. Tapi, harap tunggu hingga gw selesaikan soal ketiga yang lebih rumit dari</p>
<p>ini.</p>
<p>Jangan lupa, posting pembahasan anda kesini.</p>
<p>Pertanyaan, kritik, saran, kue, minuman, kirim ke grup google.</p>
<p>Semoga berhasil dan tunggu soal berikutnya!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rumahpenguin.web.id/programming/soal-pemograman-pascal-kriptografi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
