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