{"id":1399,"date":"2013-12-16T21:28:45","date_gmt":"2013-12-16T14:28:45","guid":{"rendered":"http:\/\/www.sulhansetiawan.com\/?p=1399"},"modified":"2013-12-17T23:22:51","modified_gmt":"2013-12-17T16:22:51","slug":"encrypt-and-decrypt","status":"publish","type":"post","link":"https:\/\/sulhansetiawan.com\/id\/encrypt-and-decrypt\/","title":{"rendered":"Encrypt dan Decrypt"},"content":{"rendered":"<p><\/p>\n<div style=\"width: 96px; margin-left: auto; margin-right: auto;\"><a href=\"\/id\/?p=1398\"><img decoding=\"async\" title=\"Program \" alt=\"\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowleft_green_32.png\" \/><\/a><a href=\"\/id\/?p=1379\"><img decoding=\"async\" title=\"Tutorial Delphi\" alt=\"\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/home_green_32.png\" \/><\/a><a href=\"\/id\/?p=1400\"><img decoding=\"async\" title=\"ParamStr dan ParamCount\" alt=\"\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowright_green_32.png\" \/><\/a><\/div>\n<p>Encrypt adalah istilah untuk merubah data menjadi data yang rahasia. Sedangkan decrypt adalah mengembalikan data rahasia tersebut menjadi data aslinya.<\/p>\n<p>Cara yang paling sederhana untuk membuat program enkrip adalah dengan menggeser data dengan faktor tertentu. Kita bisa menggeser dengan cara menambah atau mengurangi nilai ordinal datanya, bisa juga dengan memutar data dalam kode binernya. Jika kita menggeser data dengan menambah nilai ordinalnya dengan faktor 1, maka karakter A akan menjadi B, a menjadi b, b menjadi c, dan seterusnya. Tentu saja contoh ini hanya salah satu contoh yang paling sederhana. Jangan digunakan untuk melindungi data Anda \u2757<\/p>\n<p>Tipe data Char memiliki ukuran yang sama dengan tipe byte. Sedangkan byte merupakan bilangan biner dengan lebar data 8 bit (bit= <i>binary digit<\/i>). Sebagai contoh, karakter A memiliki nilai ordinal 65. Bilangan 65 dalam hexadesimal adalah 41H. Sehingga karakter A dalam biner adalah 01000001b. Jika kita memutar data tersebut ke arah kanan sebanyak satu langkah, maka datanya menjadi 10100000b atau 0A0H atau 160. Karakter dengan nilai ordinal ini akan tercetak sebagai \u00e1. Anda dapat mencobanya dengan menekan tombol Alt (tahan) kemudian mengetikkan bilangan 160 pada <i>number keypad<\/i> (bukan pada tombol bagian atas) lalu lepaskan tombol Alt.<\/p>\n<p>Kita akan membuat contoh program yang menerapkan keduanya. Pertama kita menambah ordinal data dengan 5. kemudian kita memutar data ke kanan sebanyak 1 langkah. Delphi tidak menyediakan perintah untuk memutar data. Deplhi hanya menyediakan perintah untuk menggeser data ke arah kanan (dengan perintah <code><strong>shr<\/strong><\/code>\u00a0diikuti nilai pergeserannya) dan perintah untuk menggeser data ke arah kiri (dengan perintah <code><strong>shl<\/strong><\/code> diikuti nilai pergeserannya). Untuk mendapatkan efek putar, kita bisa menggabungkan dua perintah tersebut seperti contoh berikut:<\/p>\n<pre>Data asli : 01000001\r\nKe Kanan 1: 00100000\r\nKe Kiri 7 : <span style=\"text-decoration: underline;\">10000000<\/span>\r\nOR kan    : 10100000<\/pre>\n<p>Efek perputaran ke kanan 1 langkah bisa didapat dari hasil operasi OR antara data asli yang digeser ke kanan 1 langkah dengan data asli yang digeser ke kiri sebanyak 7 langkah.<\/p>\n<pre class=\"brush: delphi\">program Encrypt;\r\n{$APPTYPE CONSOLE}\r\nvar c:char;\r\nbegin\r\n  while not EOF do\r\n  begin\r\n    read(c);\r\n    c:=Char(ord(c)+5);\r\n    c:=Char((ord(c)shr 1)or(ord(c)shl 7));\r\n    write(c);\r\n  end;   \r\nend.<\/pre>\n<p>Proses dekrip adalah proses yang tepat kebalikan dari proses enkrip.<\/p>\n<pre class=\"brush: delphi\">program Decrypt;\r\n{$APPTYPE CONSOLE}\r\nvar c:char;\r\nbegin\r\n  while not EOF do\r\n  begin\r\n    read(c);\r\n    c:=Char((ord(c)shl 1)or(ord(c)shr 7));\r\n    c:=Char(ord(c)-5);\r\n    write(c);\r\n  end;   \r\nend.<\/pre>\n<p>Sekarang bayangkan bahwa Anda adalah seorang pedagang yang mengirim pesan kepada rekan Anda dengan pesan sebagai berikut:<p><\/p>\nHarga sebenarnya sih cuma 1 juta, tapi bilang aja 10 juta, dia nggak bakal tahu.<p><\/p>\nSimpan pesan tersebut dengan nama file pesan.txt. Setelah di enkrip dengan cara:<\/p>\n<pre>C:\\Source&gt;encrypt&lt;pesan.txt&gt;rahasia.txt<\/pre>\n<p>Maka file rahasia.txt akan terlihat seperti:<\/p>\n<pre>\u00a63\u00bb63\u2019&lt;5\u00b35\u00b93\u00bb\u00b9?3\u2019&lt;7\u00b6\u20194=93\u2019\u2019\u00b7=\u00bc3\u02dc\u2019\u00bc3\u00ba7\u2019\u00b37\u00b83\u00b96\u20193\u00b73\u2019\u0161\u2019\u00b7=\u00bc3\u02dc\u2019\u00b473\u2019\u00b96638\u2019\u00b3383\u00b8\u2019\u00bc3\u00b6=\u2122<\/pre>\n<p>Jika dilakukan perintah:<\/p>\n<pre>C:\\Source&gt;decrypt&lt;rahasia.txt&gt;asli.txt<\/pre>\n<p>Maka file asli.txt akan sama dengan file pesan.txt.<\/p>\n<p>Tentu saja jika Anda membuat program tersebut tujuannya bukan untuk ngibulin pembeli \ud83d\ude00 Banyak hal yang memang membutuhkan proses merahasiakan data. Sebagai contoh, Anda membuat aplikasi data base dan hanya orang-orang tertentu saja yang boleh login ke aplikasi tersebut. Tentu saja Anda menyimpan data passwordnya dalam sebuah file. Jika file tersebut tidak dienkrip terlebih dahulu, maka dengan mudah orang bisa membaca passwordnya, dan orang-orang yang tidak bertanggung jawab bisa dengan mudah mengacaukan data-data Anda.<\/p>\n<p>Jika kita melihat perbedaan antara data asli dengan data yang dienkrip, maka kedua data tersebut seoleh-oleh tidak memiliki hubungan sama sekali. Akan tetapi pada kenyataannya, proses pemecahan kode juga dilakukan melalui program. Semakin sederhana proses enskripsi, semakin mudah kode dipecahkan. Jadi, jangan menggunakan metode ini untuk menyimpan rahasia Anda.<\/p>\n<div style=\"width: 96px; margin-left: auto; margin-right: auto;\"><a href=\"\/id\/?p=1398\"><img decoding=\"async\" title=\"Program \" alt=\"\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowleft_green_32.png\" \/><\/a><a href=\"\/id\/?p=1379\"><img decoding=\"async\" title=\"Tutorial Delphi\" alt=\"\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/home_green_32.png\" \/><\/a><a href=\"\/id\/?p=1400\"><img decoding=\"async\" title=\"ParamStr dan ParamCount\" alt=\"\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowright_green_32.png\" \/><\/a><\/div>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Encrypt adalah istilah untuk merubah data menjadi data yang rahasia. Sedangkan decrypt adalah mengembalikan data rahasia tersebut menjadi data aslinya. Cara yang paling sederhana untuk membuat program enkrip adalah dengan menggeser data dengan faktor tertentu. Kita bisa menggeser dengan cara menambah atau mengurangi nilai ordinal datanya, bisa juga dengan memutar data dalam kode binernya. Jika&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105,104,96,145],"tags":[106],"class_list":["post-1399","post","type-post","status-publish","format-standard","hentry","category-delphi-lazarus","category-programming","category-all","category-tutorial","tag-delphi"],"_links":{"self":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/posts\/1399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/comments?post=1399"}],"version-history":[{"count":0,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/posts\/1399\/revisions"}],"wp:attachment":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/media?parent=1399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/categories?post=1399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/tags?post=1399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}