[Tulisan ini diperuntukkan untuk memenuhi tugas Keamanan Informasi]

Sebelumnya, deskripsi tugas mata kuliah ini II3062 Keamanan Informasi yang diasuh oleh Bapak Budi Raharjo ini adalah sebagai berikut:

Tugas Anda adalah membuat self-generating code seperti yang ada di paper Ken Thompson, Reflections on Trusting Trust. Bahasa pemrograman bebas.


Setelah melakukan penelitian sebentar dengan menggunakan bantuan google, salah satu self-generating code yang ada adalah Quine program. Program yang konsepnya pertama diperkenalkan oleh seorang matematikan dan logician asal Amerika Williard van Orman Quine ini pada dasarnya akan melakuakan print kopian dari kode dia sendiri. Untuk penjelasan lebih jelasnya dapat dibaca di sini dan sini.

Untuk tugas kali ini saya menggunakan bahasa C#. Kode tersebut adalah sebagai berikut:

// kode Self Replication dengan menggunakan C#
using System;
class Cell
{
   static void Transcribe(string DNA)
   {
      foreach (char c in DNA)
      {
         if ((int)c==94) Console.Write((char)34 + DNA + (char)34);
         else Console.Write(c);
      }
      Console.Read();
   }
   static void Main()
   {
      Transcribe(@"//kode Self Replication dengan menggunakan C#
                   using System;
                   class Cell
                   {
                      static void Transcribe(string DNA)
                      {
                         foreach (char c in DNA)
                         {
                            if ((int)c==94) Console.Write((char)34 + DNA + (char)34);
                            else Console.Write(c);
                         }
                         Console.Read();
                      }
                      static void Main(){Transcribe(@^);}
                   }");
   }
}

Pada bahasa C#, terdapat dukungan yang memungkinkan @-tipe string untuk terdiri dari line break. Hal ini memungkinkan dengan menggunakan C#, kita dapat membuat kode quine yang “elegan”. String yang berwarna biru di atas adalah “data” yang akan diproses oleh program.

Logika yang digunakan cukup sederhana: program akan memeriksa setiap karakter dalam data string. Jika karakter tersebut adalah ^, cetak sebuah quote, string tersebut, dan sebuah quote lagi. Jika bukan, cetak karakter tersebut.

Pada akhirnya program tersebut akan mencetak kode yang persis sama dengan kode dia sendiri.

Setiap indent yang digunakan adalah dua spasi dan semua spasi intra-line adalah single.

catatan:

(char) 34 adalah ”
(char) 94 adalah ^


Demikian tugas tersebut telah saya kerjakan. Semoga dapat memberikan pengetahuan yang bermanfaat bagi para pembaca.