Disusun oleh:
MUHAMMAD YUSRAN
5140411221
Disusun oleh
Muhammad Yusran
5140411221
Tim Penguji:
Adityo Permana Wibowo, S.Kom., M.Cs. ( )
Ketua tgl.
Yogyakarta ,…………….
Ketua Program Studi Informatika
Fakultas Teknologi Informasi dan Elektro, Universitas Teknologi Yogyakarta
ii
LEMBAR PERNYATAAN
Dibuat di : Yogyakarta
Pada tanggal : 1 Maret 2019
Yang menyatakan
Muhammad Yusran
iii
KATA PENGANTAR
Penyusunan Proyek Tugas Akhir diajukan sebagai salah satu syarat untuk
memperoleh gelar sarjana pada Program Studi Informatika Fakultas Teknologi
Informasi dan Elektro Universitas Teknologi Yogyakarta.
Proyek Tugas Akhir ini dapat diselesaikan tidak lepas dari segala
bantuan, bimbingan, dorongan dan doa dari berbagai pihak, yang pada
kesempatan ini penulis ingin menyampaikan ucapan terima kasih kepada:
1. Bapak Dr. Bambang Moertono Setiawan, MM., Akt., CA. selaku Rektor
di Universitas Teknologi Yogyakarta.
2. Bapak Sutarman, M.Kom., Ph.D. selaku Dekan Fakultas Teknologi
Informasi dan Elektro di Universitas Teknologi Yogyakarta.
3. Ketua Program Studi Ibu Dr. Enny Itje Sela, S.Si., M.Kom. selaku
Kaprodi S-1 Informatika di Universitas Teknologi Yogyakarta.
4. Bapak Joko Sutopo, ST., MT. selaku Dosen pembimbing Tugas Akhir
yang selalu mendorong terselesaikannya penelitian ini.
5. Nuri Hastuti, S.P. selaku Kepala Sekolah SMK Kesehatan Binatama
beserta jajarannya yang telah mengijinkan dan membantu saya dalam
melakukan penelitian.
6. Kedua Orang tua, yaitu Ibunda tersayang (Mutiara) dan juga Ayahanda
(Muhtar) yang sudah membimbing dan memberikan kesempatan untuk
menjadi bagian dari kehidupan.
7. Kedua Kakak saya, yaitu Abdul Rahman dan Ahmad Rusman, dan semua
iv
keluarga yang selalu memberi dukungan baik morel maupun materi.
8. Semua senior-senior, teman-teman satu angkatan, adik-adik angkatan
yang tergabung dalam Ikatan Keluarga Mahasiswa Muslim Komodo –
Yogyakarta (IKMMIKOM-Y) yang telah sama-sama berjuang, susah
senang bersama kita hadapi karena kita adalah keluarga.
9. Semua teman-teman (Informatika kelas D) dan teman-teman yang tidak
dapat saya sebutkan satu persatu, baik langsung maupun tidak langsung
membantu saya dalam penyelesaikan Proyek Tugas Akhir ini.
Muhammad Yusran
v
ABSTRAK
vi
ABSTRACT
The database is a repository of data and information. The entire system stores its
data in the database, so that the contents of the data stored should be kept in strict
confidence and security.To maintain the security of the database required a
method, that method is Cryptography.System of Computer Based Test (CBT)
generally process the user data, question, answer and test results data is stored
into the database, so that data stored in the database needs to be guaranteed the
security and confidential.To maintain the confidentiality and security of data on a
system that was built, then the symmetric cryptographic algorithms applied to the
Advanced Encryption Standard (AES).Cryptographic algorithms are divided into
two symmetric algorithms and asymmetric algorithms.One example of a
symmetric algorithm is AES. Advanced Encryption Standard (AES) is a
cryptographic algorithm that can be used for mengamakan data.The AES
algorithm is a symmetric blokchipertext can encrypt (encipher) and decrypt
(decipher) information.Change the encryption data can no longer be read is
called ciphertext; decryption is the reverse change the ciphertext data into a form
that we know as the original plaintext.The system is built using the PHP
programming language and uses the MySQLi database.The data in the inputkan
on the database successfully encrypted so it cannot be read and understood by the
parties that have no interest, then the data in decrypted for display on the report.
vii
DAFTAR ISI
viii
4.3 Rancangan Sistem ........................................................................................... 25
4.3.1 Flowchat sistem ........................................................................................ 25
4.3.2 Use case diagram...................................................................................... 27
4.3.3 Sequence diagram .................................................................................... 28
4.3.4 Activity diagram....................................................................................... 32
4.4 Rancangan Database ....................................................................................... 34
4.4.1 ERD (Entity Relationship Diagram) ........................................................ 34
4.4.2 Skema database ........................................................................................ 35
4.4.3 Tabel database .......................................................................................... 35
4.5 Rancangan Antar Muka................................................................................... 40
4.5.1 Rancangan halaman login ........................................................................ 41
4.5.2 Rancangan halaman home........................................................................ 42
4.5.3 Rancangan halaman peserta ..................................................................... 43
4.5.4 Rancangan halaman operator ................................................................... 43
4.5.5 Rancangan halaman ujian ........................................................................ 44
4.5.6 Rancangan halaman status ujian .............................................................. 44
4.5.7 Rancangan halaman nilai ......................................................................... 45
4.5.8 Rancangan halaman tambah ..................................................................... 45
4.5.9 Rancangan halaman tes ............................................................................ 46
BAB V IMPLEMENTASI SISTEM .................................................................. 47
5.1 Implementasi ................................................................................................... 47
5.2 Hubungan Masalah.......................................................................................... 47
5.3 Perangkat Keras (Hardware) .......................................................................... 48
5.4 Perangkat Lunak (Software)............................................................................ 48
5.5 Implementasi Aplikasi .................................................................................... 48
5.5.1 Halaman login .......................................................................................... 48
5.5.2 Halaman home ......................................................................................... 49
5.5.3 Halaman peserta ....................................................................................... 51
5.5.4 Halaman tahun ajaran ............................................................................... 52
5.5.5 Halaman operator ..................................................................................... 52
5.5.6 Halaman ujian .......................................................................................... 53
5.5.7 Halaman TA ujian .................................................................................... 54
5.5.8 Halaman soal ............................................................................................ 54
5.5.9 Halaman status ujian ................................................................................ 55
5.5.10 Halaman nilai ujian ................................................................................ 56
5.5.11 Halaman pengerjaan soal ....................................................................... 56
5.5.12 Halaman hasil tes ................................................................................... 57
5.5.13 Soal hasil enkripsi dan dekripsi ............................................................. 58
5.6 Pengujian Aplikasi .......................................................................................... 60
5.6.1 Equivalence partitioning .......................................................................... 60
5.6.2 Boundary value analysis .......................................................................... 65
5.6.3 Requirement testing ................................................................................. 69
BAB VI PENUTUP ............................................................................................. 73
6.1 Kesimpulan ..................................................................................................... 73
6.2 Saran................................................................................................................ 73
DAFTAR PUSTAKA .......................................................................................... 74
ix
DAFTAR TABEL
x
DAFTAR GAMBAR
xii
BAB I
PENDAHULUAN
1
2
5
6
Penelitian oleh Leohani, R. A. dan Agus, I., (2016), dengan judul Proses
Enkripsi dan Dekripsi Email menggunakan Algoritma Advanced Encryption
Standard ( AES ). Penelitian ini membahas tentang
Penelitian oleh Peling, I. B. A. dan Sastra, N. P., (2018), dengan judul
Enhanced Audio Steganografi dengan Algoritma Advanced Encryption Standard
untuk Pengamanan Data Pada File Audio. Penelitian untuk mengetahui kualitas file
audio setelah disisipkan pesan yang terenkripsi dengan menggunakan metode
steganografi EAS dan untuk mengetahui integritas data setelah dilakukan proses
kriptografi dan steganografi. Hasil penelitian dengan menggunakan metode AES
sebagai kriptografi dan EAS sebagai steganografi menghasilkan kualitas file audio
yang baik karena dari keseluruhan skenario pengujian yang dilakukan nilai SNR
terendah yang didapat adalah 49,33 dB sedangkan nilai SNR tertinggi adalah 51,10
dB.
Seperti terlihat pada Tabel 2.1. tidak ada perbedaan pada metode yang
digunakan, yaitu dengan penggunaan teknik Algoritma Advanced Encription Standart
(AES). Perbedaan dari ketiga referensi dengan judul yang diangkat oleh penulis
terletak pada judul penelitian, sehingga menunjukan algoritma Advanced Encription
Standart (AES) dapat digunakan dibeberapa permasalahan yang ada.
enkripsi dan dekripsi. Pesan yang akan dienkripsi disebut sebagai plaintext (teks
biasa). Disebut demikian karena informasi ini dengan mudah dapat dibaca dan
dipahami oleh siapa saja. Algoritma yang dipakai untuk mengenkripsi dan
mendekripsi sebuah plaintext melibatkan penggunaan suatu bentuk kunci. Pesan
plaintext yang telah dienkripsi atau dikodekan dikenal sebagai ciphertext (teks
sandi) (Pabokory, F. N. dkk., 2015).
2. Dekripsi
Proses dekripsi pada algoritma Advanced Encryption Standard (AES)
terdiri dari beberapa tahap proses transformasi bytes, yaitu:
a. Addroundkey, pada tahap ini pesan yang diterima (chiper text)
akan di XOR kan dengan cipher key. Tahap ini disebut juga
dengan Initial round.
b. Round, selanjutnya akan dilakukan putaran sebanyak Nr-1 kali.
13
test/ujian. Karakteristik tes ini sama dengan tes konvensional, yaitu menggunakan
satu perangkat tes untuk beberapa peserta dengan panjang tes yang sama (fixed
test lenght) (Hariyanto, A., 2017).
Perbedaan Computer Based Test dengan Convensional Test terletak pada
teknik penyampaian (delivery) butir soal yang tidak lagi menggunakan kertas
(paperless), baik untuk naskah soal maupun lembar jawaban. Sistem skor atau
koreksi langsung dilakukan oleh komputer. Computer Based Test merupakan
inovasi baru di era digital teknologi. Dengan teknologi pendidikan yang efektif,
Computer Based Test mampu menyajikan sistem evaluasi/ujian jarak jauh yang
dikelola oleh server local maupun di integrasikan dengan server online. Server
local yang diletakkan pada suatu lab akan menangani sejumlah perangkat
komputer client yang akan digunakan oleh siswa untuk menjawab pertanyaan
secara offline maupun dalam jaringan online (Hariyanto, A., 2017).
20
21
3.2.1 Requirement
Tahapan requirement melakukan pengumpulan data menggunakan metode
observasi, studi literatur, dan analis sistem yang terbagi menjadi dua bagian yaitu
analisis sistem yang berjalan dan analis sistem yang diusulkan.
3.2.2 Perancangan
Pada tahap ini menjelaskan tentang proses yang dilakukan untuk membuat
kriptografi security data pada sistem Computer Based Test (CBT) dengan
algoritma Advanced Encription Standart (AES). Berikut ini akan diberikan
perincian yang akan dibuat adalah sebagai berikut :
a. Model security data
Skema algoritma Advanced Encryption Standart (AES) menggunakan
124 bit kunci secara umum terdiri dari tiga proses, yaitu proses
22
3.2.3 Implementasi
Implementasi dengan menerapkan server side scripting bahasa
pemrograman php, html, css, database menggunakan MySQL. Penulis juga
menerapkan algorima Advanced Encryption Standart (AES) untuk keamanan
data.
3.2.4 Pengujian
Aplikasi yang sudah terbentuk selanjutnya akan dilakukan uji coba. Uji
coba dilakukan dengan black box testing. Metode yang dipakai untuk
melaksanakan Black Box Testing yaitu Equivalence Partitioning, Boundary Value
Analysis, dan Requirement Testing.
BAB IV
ANALISA DAN PERANCANGAN SISTEM
23
24
Proses entry data soal pada aplikasi CBT kemudian diproses berupa
enkripsi dengan algoritma AES untuk pengamanan data yang tersimpan pada
database. Data enkripsi yang telah disimpan pada database kemudian di dekripsi
terlebih dahulu sebelum digunakan kembali. Flowchat proses security data dapat
dilihat pada Gambar 4.5.
user input data login agar dapat masuk ke dalam sistem tes berbasis
komputer, kemudian data login di cek apakah valid atau tidak dengan data pada
database. Jika data login valid maka tampil menu untuk user, sebaliknya maka
tampil pesan bahwa data login salah.
b. Sequence diagram input data user
Sequence diagram input data user merupakan sebuah bentuk
pemodelan interaksi yang terjadi ketika user admin input data user.
Agar lebih jelas terlihat pada Gambar 4.8.
30
Admin masuk ke form user untuk input data, database merespon data
yang di input. Data user berhasil di simpan pada database, selanjutnya data akan
tampil pada form user.
c. Sequence diagram input soal
Sequence diagram input soal merupakan sebuah bentuk pemodelan
interaksi yang terjadi ketika admin input data soal. Agar lebih jelas
terlihat pada Gambar 4.9.
31
Admin masuk ke form soal untuk input data soal tes, selanjutnya proses
enkripsi data soal sebelum simpan ke database. Admin harus input key enkripsi,
sebagai kunci untuk enkripsi dan juga untuk dekripsi. Proses enkripsi selesai dan
berhasil maka data tersimpan pada database, data soal kemudian tampil pada form
soal.
d. Sequence diagram mengerjakan soal
Sequence diagram mengerjakan soal merupakan sebuah bentuk
pemodelan interaksi yang terjadi ketika proses peserta menjawab soal.
Agar lebih jelas terlihat pada Gambar 4.10.
32
Peserta masuk ke form jawab soal untuk mengerjakan sejumlah soal tes
yang ada. Soal dari database masih terenkripsi, maka sebelum tampil ke form
terlebih dahulu proses dekripsi. Peserta input key dekripsi untuk melanjutkan
proses dekripsi soal, proses dekripsi soal gagal ketika salah input key dekripsi.
Tabel users adalah tabel yang menyimpan data operator dan admin sistem
CBT. Atribut dari tabel users yaitu iduser sebagai primary key, username,
password, dan lain-lain.
Tabel peserta adalah tabel yang menyimpan data peserta tes. Atribut dari
tabel peserta yaitu id_pesera sebagai primary key, username, password, dan lain-
lain.
Tabel soal adalah tabel yang menyimpan data soal beserta kunci
jawabannya. Atribut dari tabel soal yaitu id_soal sebagai primary key, soal,
pilihan, kunci, dan lain-lain.
Tabel ujian yang mengimpan data ujian atau tes peserta. Atribut dari tabel
ujian yaitu id_ujian sebagai primary key, nama_ujian, tanggal, waktu ujian, dan
lain-lain.
Tabel tahun ajaran yang mengimpan data tahun ajaran. Atribut dari tabel ta
yaitu id_ta sebagai primary key, dan nama_ta.
Tabel tahun ajaran ujian untuk mengatur ujian untuk tahun ajaran ujian
atau tes yang akan dilaksanakan. Atribut dari tabel ta_ujian yaitu id_ujian, id_ta,
dan aktif.
Tabel nilai yang mengimpan data nilai. Atribut dari tabel nilai yaitu
id_nilai sebagai primary key, nisn, dan lain-lain.
Tabel analisis yang mengimpan data analisis. Atribut dari tabel analisis
yaitu id_analisis sebagai primary key, nisn, jawaban, dan lain-lain.
Tabel komentar yang menyimpan data komentar dari user atau pengguna
sistem sebagai respon dari pengumuman. Atribut dari tabel komentar yaitu
id_komentar sebagai primary key, nama user yang komentar, isi komentar, dan
lain-lain.
40
Tabel identitas yang mengimpan data identitas aplikasi. Atribut dari tabel
identitas yaitu id_identitas sebagai primary key, nama_aplikasi, dan gambar_logo.
Halaman home peserta terdapat content daftar ujian dan tombol untuk
memulai tes atau ujian. Rancangan halaman dapat dilihat pada Gambar 4.18.
5.1 Implementasi
Tahap implementasi ini akan dijelaskan mengenai hubungan masalah
yang akan diteliti, perangkat keras (hardware) dan perangkat lunak (software)
yang digunakan dalam membangun sistem, tampilan berdasarkan halaman
aplikasi beserta algoritma penggunaan masing-masing halaman, dan pengujian
aplikasi.
47
48
Tampilan soal yang telah di enkripsi tersimpan pada database. Kolom soal
yaitu data soal yang telah di enkripsi, kolom pilihan_1 sampai pilihan_5 adalah
pilihan jawaban soal, dan kolom kunci yaitu jawaban benar dari pilihan jawaban.
Tampilan soal hasil enkripsi dapat dilihat pada Gambar 5.15.
1. Pengujian login
Berikut dapat dilihat pengujian dari login dengan kasus dan hasil
uji data falid dan infalid kemudian diamati dan menghasilkan
kesimpulan dari pengujian tersebut. Pengujian login dapat dilihat pada
Tabel 5.1.
3. Pengujian peserta
Berikut dapat dilihat pengujian dari peserta dengan kasus dan hasil
uji data falid dan infalid sesuai dengan batasan atau format dari
skenario pengujian kemudian diamati dan menghasilkan kesimpulan
dari pengujian tersebut. Pengujian peserta dapat dilihat pada Tabel
5.3.
4. Pengujian operator
Berikut dapat dilihat pengujian dari operator dengan kasus dan
hasil uji data falid dan infalid sesuai dengan batasan atau format dari
skenario pengujian kemudian diamati dan menghasilkan kesimpulan
dari pengujian tersebut. Data masukan untuk pengujian operator
hampir sama dengan peserta, hanya username yang berbeda.
Pengujian operator dapat dilihat pada Tabel 5.4.
5. Pengujian ujian
Berikut dapat dilihat pengujian dari ujian atau tes dengan kasus
dan hasil uji data falid dan infalid sesuai dengan batasan atau format
dari skenario pengujian kemudian diamati dan menghasilkan
64
6. Pengujian soal
Berikut dapat dilihat pengujian dari soal dengan kasus dan hasil uji
data falid dan infalid sesuai dengan batasan atau format dari skenario
pengujian kemudian diamati dan menghasilkan kesimpulan dari
pengujian tersebut. Pengujian soal dapat dilihat pada Tabel 5.6.
7. Pengujian identitas
Berikut dapat dilihat pengujian dari identitas dengan kasus dan
hasil uji data falid dan infalid sesuai dengan batasan atau format dari
skenario pengujian kemudian diamati dan menghasilkan kesimpulan
dari pengujian tersebut. Pengujian identitas dapat dilihat pada Tabel
5.7.
yang diuji hanya modul peserta karena data masukkan yang diuji dapat
merepresentasi modul yang lain. Modul peserta terdiri atas satu panel entry data
seperti pada gambar berikut. Gambar 5.17 adalah form peserta terdapat 14 field
entry data yaitu id_peserta, nama_lengkap, nisn, password, id_ta, status, waktu,
email, foto, id_session, hp, alamat, dan tentang, namun yang di uji adalah
sebagian field yang langsung di input dari program.
Pengujian nilai batas atas dan nilai batas bawah NISN dengan hasil uji
data true dan false sesuai dengan batasan dari data sampel dan perkiraan hasil
kemudian diamati dan menghasilkan kesimpulan dari pengujian tersebut.
Pengujian NISN dapat dilihat pada Tabel 5.8.
Pengujian nilai batas atas dan nilai batas bawah nama lengkap dengan
hasil uji data true dan false sesuai dengan batasan dari data sampel dan perkiraan
hasil kemudian diamati dan menghasilkan kesimpulan dari pengujian tersebut.
Pengujian nama lengkap dapat dilihat pada Tabel 5.9.
Pengujian nilai batas atas dan nilai batas bawah email dengan hasil uji data
true dan false sesuai dengan batasan dari data sampel dan perkiraan hasil
kemudian diamati dan menghasilkan kesimpulan dari pengujian tersebut.
Pengujian email dapat dilihat pada Tabel 5.10.
Pengujian nilai batas atas dan nilai batas bawah nomor hp dengan hasil uji
data true dan false sesuai dengan batasan dari data sampel dan perkiraan hasil
68
Pengujian nilai batas atas dan nilai batas bawah alamat dengan hasil uji
data true dan false sesuai dengan batasan dari data sampel dan perkiraan hasil
kemudian diamati dan menghasilkan kesimpulan dari pengujian tersebut.
Pengujian alamat dapat dilihat pada Tabel 5.12.
Pengujian nilai batas atas dan nilai batas bawah tentang dengan hasil uji
data true dan false sesuai dengan batasan dari data sampel dan perkiraan hasil
kemudian diamati dan menghasilkan kesimpulan dari pengujian tersebut.
Pengujian tentang dapat dilihat pada Tabel 5.13.
69
3. Pengujian header
Pengujian fungsi komponen dalam header seperti pengujian fungsi
tombol lihat profil dan tombol edit profil, kemudian dapat diamati
perkiraan hasil. Pengujian dapat dilihat pada Tabel 5.16.
4. Pengujian content
Pengujian fungsi komponen dalam content juga terdapat banyak
71
5. Pengujian peserta
Pengujian fungsi komponen dalam modul peserta terdapat banyak
juga komponen yang akan diuji seperti fungsi tombol mulai tes, dan
lain-lain. Pengujian dapat dilihat pada Tabel 5.18.
6.1 Kesimpulan
Berdasarkan penelitian yang dilakukan oleh penulis dan merujuk kepada
rumusan masalah, maka dapat diambil kesimpulan bahwa penelitian ini
menghasilan sebuah sistem Computer Based Test (CBT) yang dapat menerapkan
algoritma Advanced Encryption Standart (AES) untuk security atau
mengamankan data berupa data soal, jawaban, dan kunci jawaban pada database.
6.2 Saran
Berdasarkan hasil implementasi sistem kriptografi security data pada
Computer Based Test (CBT) yang penulis lakukan, maka penulis dapat
memberikan saran untuk pengembangan sistem yang mungkin dapat dilakukan
oleh penulis yang lain, yaitu :
a. Algoritma Advanced Encryption Standart (AES) hanya memiliki 1
key enkripsi dan 1 key dekripsi yang sama, sehingga memungkinkan
untuk menggunakan algoritma lain yang memiliki key enkripsi dan
dekripsi yang yang tidak sama dan bisa berjumlah banyak.
b. Key enkripsi dan key dekripsi masih dinput secara manual, maka dapat
dikembangkan berupa key automatis oleh sistem dengan kriteria yang
unik dan kombinasi karakter antara angka, symbol, dan huruf.
c. Data peserta masih di input oleh user admin atau operator, sehingga
dapat dikembangkan agar peserta yang akan mendaftar langsung
melalui sistem.
d. Memerlukan penambahan fungsi untuk proses pengiriman kartu
peserta dan hasil tes menggunakan email secara automatis.
73
DAFTAR PUSTAKA
Aditama, R. (2017), Web Service Pembayaran Uang Kuliah Online dengan PHP
& SOAP WSDL, Yogyakarta: Lokomedia.
Leohani, R.A. dan Agus, I. (2016), Proses Enkripsi dan Dekripsi Email
menggunakan Algoritma Advanced Encryption Standard ( AES ), Seminar
Nasional Matematika dan Pendidikan Matematika UNY hal.1–6.
Peling, I.B.A. dan Sastra, N.P. (2018), Enhanced Audio Steganografi dengan
Algoritma Advanced Encryption Standard untuk Pengamanan Data Pada
File Audio, Majalah Ilmiah Teknologi Elektro, 17(1–4), 1–12.
Tedyyana, A. dan Danuri (2017), Computer Based Test Untuk Seleksi Masuk
Politeknik Negeri Bengkalis, Jurnal Teknologi Informasi & Komunikasi
Digital Zone, 8(11), 1–15.
74
LAMPIRAN
75
76
128/192/256-bit keys
$Nr = $Nk + 6; // no of rounds: 10/12/14 for 128/192/256-
bit keys
$w = array();
$temp = array();
for ($i = 0; $i < $Nk; $i++) {
$r = array($key[4 * $i], $key[4 * $i + 1], $key[4 * $i
+ 2], $key[4 * $i + 3]);
$w[$i] = $r;
}
for ($i = $Nk; $i < ($Nb * ($Nr + 1)); $i++) {
$w[$i] = array();
for ($t = 0; $t < 4; $t++) $temp[$t] = $w[$i - 1][$t];
if ($i % $Nk == 0) {
$temp = self::subWord(self::rotWord($temp));
for ($t = 0; $t < 4; $t++) $temp[$t] ^=
self::$rCon[$i / $Nk][$t];
} else if ($Nk > 6 && $i % $Nk == 4) {
$temp = self::subWord($temp);
}
for ($t = 0; $t < 4; $t++) $w[$i][$t] = $w[$i -
$Nk][$t] ^ $temp[$t];
}
return $w;
}
private static function subWord($w)
{
for ($i = 0; $i < 4; $i++) $w[$i] = self::$sBox[$w[$i]];
return $w;
}
private static function rotWord($w)
{
$tmp = $w[0];
for ($i = 0; $i < 3; $i++) $w[$i] = $w[$i + 1];
$w[3] = $tmp;
return $w;
}
// sBox is pre-computed multiplicative inverse in GF(2^8) used
in subBytes and keyExpansion [§5.1.1]
private static $sBox = array(
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30,
0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad,
0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34,
0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07,
0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52,
0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a,
0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45,
0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc,
0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
78
Aesctr.class.php
Class AesCtr extends Aes
{
public static function encrypt($plaintext, $password,
$nBits)
{
$blockSize = 16; // block size fixed at 16 bytes / 128
bits (Nb=4) for AES
if (!($nBits == 128 || $nBits == 192 || $nBits == 256))
return ''; // standard allows 128/192/256 bit keys
// note PHP (5) gives us plaintext and password in UTF8
encoding!
// use AES itself to encrypt password to get cipher key
(using plain password as source for
// key expansion) - gives us well encrypted key
$nBytes = $nBits / 8; // no bytes in key
$pwBytes = array();
for ($i = 0; $i < $nBytes; $i++) $pwBytes[$i] =
ord(substr($password, $i, 1)) & 0xff;
$key = Aes::cipher($pwBytes,
Aes::keyExpansion($pwBytes));
$key = array_merge($key, array_slice($key, 0, $nBytes -
79
return $ciphertext;
}
public static function decrypt($ciphertext, $password,
$nBits)
{
$blockSize = 16; // block size fixed at 16 bytes / 128
bits (Nb=4) for AES
if (!($nBits == 128 || $nBits == 192 || $nBits == 256))
return ''; // standard allows 128/192/256 bit keys
$ciphertext = base64_decode($ciphertext);
// use AES to encrypt password (mirroring encrypt
routine)
$nBytes = $nBits / 8; // no bytes in key
$pwBytes = array();
for ($i = 0; $i < $nBytes; $i++) $pwBytes[$i] =
ord(substr($password, $i, 1)) & 0xff;
$key = Aes::cipher($pwBytes,
Aes::keyExpansion($pwBytes));
$key = array_merge($key, array_slice($key, 0, $nBytes -
16)); // expand key to 16/24/32 bytes long
// recover nonce from 1st element of ciphertext
$counterBlock = array();
$ctrTxt = substr($ciphertext, 0, 8);
for ($i = 0; $i < 8; $i++) $counterBlock[$i] =
ord(substr($ctrTxt, $i, 1));
// generate key schedule
$keySchedule = Aes::keyExpansion($key);
// separate ciphertext into blocks (skipping past
initial 8 bytes)
$nBlocks = ceil((strlen($ciphertext) - 8) /
$blockSize);
$ct = array();
for ($b = 0; $b < $nBlocks; $b++) $ct[$b] =
substr($ciphertext, 8 + $b * $blockSize, 16);
$ciphertext = $ct; // ciphertext is now array of block-
length strings
// plaintext will get generated block-by-block into
array of block-length strings
$plaintxt = array();
for ($b = 0; $b < $nBlocks; $b++) {
// set counter (block #) in last 8 bytes of counter
block (leaving nonce in 1st 8 bytes)
for ($c = 0; $c < 4; $c++) $counterBlock[15 - $c] =
self::urs($b, $c * 8) & 0xff;
for ($c = 0; $c < 4; $c++) $counterBlock[15 - $c -
4] = self::urs(($b + 1) / 0x100000000 - 1, $c * 8) & 0xff;
$cipherCntr = Aes::cipher($counterBlock,
$keySchedule); // encrypt counter block
$plaintxtByte = array();
for ($i = 0; $i < strlen($ciphertext[$b]); $i++) {
// -- xor plaintext with ciphered counter byte-
by-byte --
$plaintxtByte[$i] = $cipherCntr[$i] ^
ord(substr($ciphertext[$b], $i, 1));
$plaintxtByte[$i] = chr($plaintxtByte[$i]);
}
81
Dekripsi :
if(!empty($key[key_soal])){
$tgl=tgl_indo($r[tanggal]);
$soal =
AesCtr::decrypt($r[soal],$key[key_soal],256);
$kunci =
AesCtr::decrypt($r[kunci],$key[key_soal],256);
echo "
<tr>
<td width='20'>$no</td>
<td><p style='font-weight:
bold'>$soal</p></td>
<td>
<ol type='A'>";
for($i=1; $i<=4; $i++){
$kolom = "pilihan_$i";
$jawaban =
AesCtr::decrypt($r[$kolom],$key[key_soal],256);
if($kunci==$i){
echo "<li
style='font-weight: bold'>$jawaban</li>";
}else{
echo "<li>$jawaban</li>";
}
}
echo"
</ol>
</td>";
}