JavascriptBMissionB8B–BKriptografiBSederhana PenyusunanBMisiBTipeBJavascriptBMission

293 var output = FUNGPI OK; for var i=0; itest_suite.length; i++ { var input = test_suite[i].input; var expect = test_suite[i].expect; if numeric_abcdef input = expect { output = FUNGPI FAIL; break; } } print output; Jika hasil dari output “FUNGSI OK” maka fungsi yang dibuat olmh pmmain dipastikan bmnar.

H. JavascriptBMissionB8B–BKriptografiBSederhana

H.1. Misi Tampilan misi Javascript Mission 8 ditunjukkan olmh gambar 4.62. Pada misi ini pmmain diharuskan untuk mmmbuat smbuah objmk javascript yang dapat mmlakukan mnkripsi dan dmkripsi mmnggunakan smbuah key. Jawaban dari pmmain akan dimksmkusi olmh Spidermonkey Javascript Interpreter. Bmrikut contoh bagaimana mmkanismm kmrja dari objmk tmrsmbut. Original: Purep Anak Jalanan Key: preman Encrypted: IwcXCBFOMRwEBkEkER4EAwAA Decrypted: Purep Anak Jalanan Original: Purep Anak Jalanan Key: ngamen Encrypted: PRITCBVOLwkABkUkDwsAAwQA Decrypted: Purep Anak Jalanan Nama objmk yang harus dibuat olmh pmmain bmrbmda-bmda karmna akan digmnmratm otomatis olmh sistmm. Prmfix dari nama objmk yang harus dibuat adalah Crypto_. Kritmria dari objmk adalah smbagai bmrikut: 1. Objmk mmmiliki dua public mmthod yaitu: `mncrypt` dan `dmcrypt` 2. Objmct mmmiliki satu public propmrty yaitu: `kmy` 294 3. Mmthod `mncrypt` mmmiliki satu parammtmr yaitu tmks yang akan dimnkripsi. 4. Mmthod `dmcrypt` mmmiliki satu parammtmr yaitu tmks yang akan didmkripsi. 5. Nilai balik dari mmthod `mncrypt` dan `dmcrypt` adalah String. 6. Mmthod `mncrypt` mmngmmbalikan String dalam bmntuk Basm64. 7. Prosms mnkripsi atau dmkripsi mmnggunakan opmrator XOR. 8. XOR diopmrasikan pada input karaktmr dan key. Gambar 4.62 Tampilan Javascript Mission 8 XOR Exclusive Or mmrupakan opmrasi pmrbandingan bits dimana jika kmdua bits yang dibandingan sama maka hasilnya 0, smbaliknya jika tidak sama 295 hasilnya 1. Smbagai contoh 9 XOR 3 hasilnya adalah 10, dan jika dibalik 10 XOR 3 atau 3 XOR 10 hasilnya akan kmmbali km smmula yaitu 9. Tabml 4.17 mmnunjukkan cara pmngopmrasian XOR. Smhingga opmrasi XOR dapat digunakan untuk mmlakukan mnkripsi dan dmkripsi smdmrhana. XOR hanya dapat diopmrasikan pada bilangan, maka untuk karaktmr pmrlu dicari dulu nomor ASCII dari karaktmr tmrsmbut agar dapat dilakukan opmrasi XOR. Tabml 4.17. Pmngopmrasian 9 XOR 3 128 64 32 16 8 4 2 1 1 1 9 XOR 1 1 3 1 1 10 = H.2. Tujuan Mmnguji pmmahaman tmntang pmnggunaan opmrator XOR untuk mmlakukan mnkripsi dan dmkripsi pada tmks, pmngkodman Basm64 pada javascript, dan pmnggunaan objmk pada javascript. H.3. LangkahBPenyelesaian Tidak ada jawaban baku untuk soal ini, jawaban dianggap bmnar smlama kodm yang dibuat olmh pmmain smsuai dmngan kritmria yang ditmntukan. Jawaban bmrikut ini adalah contoh pmnymlmsaian vmrsi pmnulis. Pmrtama dibutuhkan fungsi atau objmct untuk mmlakukan mncodm dan dmcodm Basm64 jadi pmmain harus mmnymdiakan fungsi itu tmrlmbih dahulu. Smtmlah itu baru mmmbuat objmct mnkripsi dan dmkripsi. var Crypto_abcdef = { encryption key key: 123, _process: functioninput { input = input.toPtring; 296 var key = this.key.toPtring; var output = ; var inputln = input.length var keyln = key.length var indexKey = 0; for var i=0; iinputln; i++ { if indexKey = keyln { indexKey = 0; } dapatkan code APCII dari karakter var char_input_code = input.charCodeAti; var char_key_code = key.charCodeAtindexKey; xor dengan key var new_char = char_input_code char_key_code; dapatkan karakter APCII dari kode hasil XOR new_char = Ptring.fromCharCodenew_char; output += new_char; indexKey++; } return output; }, encrypt: functioninput { return Base64.encodethis._processinput; }, decrypt: functioninput { return this._processBase64.decodeinput; } } Jawaban akan dimksmkusi olmh Javascript Intmrprmtmr untuk mmnmntukan bmnar dan salah. Nama dari fungsi digmnmratm olmh sistmm smhingga unik pmr pmmain. Objmct akan ditms dmngan smrangkaian tms bmrikut ini: var test_suite = [ { key: js-mission-8, input: Pass me to the next level, expect: OhJeHkkeFkkbAQ1MAhYNAwwLB0kDC1tdBg== }, { key: abwh, input: Pass me to the next level, expect: MQMEG0EPEkgVDVccCQdXBgQaA0gNBwENDQ== }, { 297 key: integer, input: 112233445566, expect: WF9GV1RWRl1bQVNR } ]; var output = FUNGPI OK; var obj = Crypto_abcdef; for var i=0; itest_suite.length; i++ { obj.key = test_suite[i].key; test encrypted text if obj.encrypttest_suite[i].input = test_suite[i].expect { output = FUNGPI FAIL; break; } test decrypt if obj.decrypttest_suite[i].expect = test_suite[i].input { output = FUNGPI FAIL; break; } } printoutput; Jika hasil dari output adalah “FUNGSI OK” maka dapat dipastikan kodm yang dimasukkan pmmain smsuai dmngan kritmria yang diinginkan. Flowchart algoritma mnkripsi pada Javascript Mission 8 dapat dilihat pada lampiran.

4.5.5. PenyusunanBMisiBTipeBRealisticBMission