OOOO

Selasa, 11 Desember 2018

Quiz SBD TA 2018/2019


A.       Analisa SBD berdasarkan ERD
1.      Berikan deskripsi terkait tema kelompok pengambilan kasus SBD!
Pengolahan data untuk menghasilkan informasi secara terkomputerisasi, merupakan sarana yang sangat dibutuhkan saat ini pada berbagai jenis usaha, karena informasi mampu disajikan dalam waktu yang cepat dan akurat. Informasi yang mampu disajikan dengan cepat dan akurat mampu menghasilkan pengambilan keputusan yang cepat dan efektif. Minimarket merupakan jenis usaha yang berorientasi pada laba. Dengan pengolahan data secara terkomputerisasi, barang yang telah dijual mampu diketahui secara cepat, berserta keuntungannya. Pengolahan data secara terkomputerisasi juga mampu membantu dalam mengontrol penyetokan barang, mengontrol kadaluarsa barang, mengetahui barang apa yang paling banyak terjual/laku, barang apa yang paling sedikit terjual/tidak laku, membandingkan antar merk untuk barang sejenis yang paling sering dicari, mengetahui tingkat penjualan dari setiap periode tertentu (hari, bulan, dan tahun) baik disajikan dalam bentuk angka-angka di sebuah tabel maupun grafik. Dengan keuntungan-keuntungan yang disebabkan oleh pengolahan data secara terkomputerisasi tersebut, mampu mempermudah si pemilik minimarket dalam menentukan tindakan apa yang harus dilakukan ke depannya nanti,dalam membuat kebijakan-kebijakan untuk memperlancar dan meningkatkan penjualan barang di minimarket-nya.


2.      Apa yang dimaksud dengan tabel dan apa fungsi dari tabel pada database? Jelaskan! Dan buatlah tabel-tabel tersebut menggunakan 10 isian data dengan menggunakan DBMS yang kelompok anda kuasai! (berikan sintaks, keluaran nya!)
Tabel adalah merupakan kumpulan dari beberapa record dan juga field. Fungsi dari table sendiri adalah untuk menghimpun sejumlah field dan record, misalnya tabel Mahasiswa yang terdiri dari field Jurusan yang memiliki record Teknik Komputer, Teknik Informatika dan Sistem Inormasi.


3.      Apa yang dimaksud dengan; Enterprise, Entititas, Field, Record, Data Value dan Record Data dan berikan contoh berdasarkan kasus SBD kelompok anda? (cantumkan referensi sumber)
Beberapa Istilah yang Digunakan Pada Basis Data
1. Entitas
Sekumpulan objek yang terdefinisikan yang mempunyai karakteristik sama dan bisa dibedakan satu dengan lainnya. Objek dapat berupa barang, orang, tempat atau suatu kejadian.
Contoh : Mahasiswa, Dosen

2. Atribut
Deskripsi data yang bisa mengidentifikasi entitas yang membedakan entitas tersebut dengan entitas yang lain. Seluruh atribut harus cukup untuk menyatakan identitas obyek, atau dengan kata lain, kumpulan atribut dari setiap entitas dapat mengidentifikasi keunikan suatu individu.
Atribut terdiri dari beberapa jenis. Diantaranya adalah:
a. Atribut Value:
Merupakan data aktual atau informasi yang disimpan pada suatu atribut di dalam suatu entity atau relationship
b.  Atribut Key
Adalah atribut yang digunakan untuk menentukan suatu Entity secara unik dan berbeda
c.  Atribut Simple
Atribut yang hanya memiliki nilai tunggal
d.  Atribut Multivalue
Atribut yang memiliki sekelompok nilai untuk setiap instant Entity
e. Atribut composite
Suatu atribut yang terdiri dari beberapa atribut yang lebih kecil yang mempunyai arti tertentu

f. Atribut Derivatif
 Merupakan suatu atribut yang berasal atau dihasilkan dari atribut yang lain.

3. Data Value (Nilai Data)
Data aktual atau informasi yang disimpan pada tiap data, elemen, atau atribut. Atribut nama pegawai menunjukan tempat dimana informasi nama karyawan disimpan, nilai datanya misalnya adalah Anjang, Arif, Suryo, dan lain-lain yang merupakan isi data nama pegawai tersebut.

4. File/Tabel
Kumpulan record sejenis yang mempunyai panjang elemen yang sama, atribut yang sama, namun berbeda nilai datanya.

5. Record/Tuple
Kumpulan elemen-elemen yang saling berkaitan menginformasikan tentang suatu entitas secara lengkap. Satu record mewakili satu data atau informasi.
Contoh : Record bisa saja nama dan alamat Anda dan Nomor Jaminan sosial Anda.

4.      Apa yang dimaksud dengan ERD? Jelaskan! Dan Buat ERD  dengan menggunakan DBMS!
ERD adalah salah satu model yang digunakan untuk mendesain database dengan tujuan menggambarkan data yang berelasi pada sebuah database. Umumnya setelah perancangan ERD selesai berikutnya adalah mendesain database secara fisik yaitu pembuatan tabel, index dengan tetap mempertimbangkan performance. Kemudian setelah database selesai dilanjutkan dengan merancang aplikasi yang melibatkan database.


5.      Buatlah contoh kasus yang memungkinkan jumlah entitas atau tabel dilakukan penambahan berdasarkan tema kelompok anda dan Buatlah ERD baru versi kelompok anda!


6.      Buatlah 5 query (sesuai jumlah anggota)berdasarkan ERD soal nomor 5 (berikan sintaks dan keluaran nya!)

B.       Analisa SBD berdasarkan keluaran (bukti transaksi)
1.              Berikan deskripsi terkait 5 struk (sesuai jumlah anggota) yang akan dilakukan analisa!


2.   Apa yang dimaksud dengan form bentuk tidak normal? Jelaskan! berikan dalam bentuk tabelnya!
Bentuk Tidak Normal (Unnormalized Form)Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya sesuai dengan kedatangannya.



3.   Apa yang dimaksud dengan tahapan normalisasi (Bentuk normalisasi yang sering digunakan adalah 1NF, 2NF, dan 3NF), jelaskan dan berikan dalam bentuk tabelnya!
· Bentuk Normal Pertama (1NF/First Normal Form) Bentuk ini sangat sederhana. Aturannya sebuah tabel tidak boleh mengandung kelompok yang terulang.

· Bentuk Normal Kedua (2 NF/ Second Normal Form) Aturan kedua berbunyi bahwa bentuk data telah memenuhi kriteria bentuk normal kesatu dan setiap file yang tidak bergantung sepenuhnya pada kunci primer harus dipindahkan ke tabel lain.


· Bentuk Normal Ketiga ( 3NF / Third Normal Form ) Aturan normalisasi ketiga berbunyi bahwa relasi haruslah dalam bentuk normal kedua dan tidak boleh ada kebergantungan antara field-field non- kunci (kebergantungan transitif ).

4.   Tabel berdasarkan hasil normalisasi tulis dalam bentuk sintaks dan keluaran nya berdasarkan DBMS yang dipilih!


5.   Buat kan bentuk ERD nya dengan menggunakan DBMS!
6.   Buatlah 5 query (sesuai jumlah anggota) berdasarkan ERD soal nomor 5 (berikan sintaks dan keluaran nya!)

C.        Buat kesimpulan berdasarkan penemuan persamaan dan perbedaan pada study kasus A dan B
!

Catatan:
Jawaban dimuat dalam format deskripsi atau paparan dimuat dalam blog pribadi dengan mencantumkan link blog anggota kelompok.



Minggu, 09 Desember 2018

QUIS KSK TA 2018/2019

A.     Algoritma
1.      Deskripsikan hubungan KSK dengan Kriptografi Algoritma Kelompok!
Sebuah algoritma pada enkripsi public key. RSA merupakan algoritma pertama yang cocok untuk digital signature seperti halnya ekripsi, dan salah satu yang paling maju dalam bidang kriptografi public key. RSA masih digunakan secara luas dalam protokol electronic commerce, dan dipercaya dalam mengamnkan dengan menggunakan kunci yang cukup panjang


2.      Jelaskan tentang Algoritma kelompok mulai dari: pengertian, sejarah, cara kerjanya (proses ekripsi dan proses deskripsi) , gambarkan flowchart berikan penjelasan!

Pengertian
RSA adalah metode yang menggunakan perhitungan matematika yang rumit dandisertai dengan kunci pengaman awal (dengan private key maupun dengan public key)sehingga amat sulit untuk ditembus oleh hacker. Adapun prinsip pengamanan metodeini adalah bagaimana sistem dapat mengamankan proses penyimpanan dan pengirimandokumen. Mula-mula dokumen dalam bentuk teks dienkripsi dengan metode RSA.Sehingga dokumen tidak dapat dibaca oleh siapapun, karena teks telah berubah menjadisusunan huruf yang teracak. Dokumen yang susunan hurufnya telah teracak tersebut jika ingin dibaca oleh pemilik dokumen, maka dokumen tersebut harus dibuka dengandekripsi RSA kembali (Supriyono, 2008).
Algoritma RSA merupakan salah satu algoritma public key yang populer dipakai dan bahkan masih dipakai hingga saat ini. Kekuatan algoritma ini terletak pada proses eksponensial, dan pemfaktoran bilangan menjadi 2 bilangan prima yang hingga kini perlu waktu yang lama untuk melakukan pemfaktorannya.

          SEJARAH
            Algoritma ini dinamakan sesuai dengan nama penemunya, Ron Rivest, Adi Shamir dan Adleman(Rivest-Shamir-Adleman) yang dipublikasikan pada tahun 1977 di MIT, menjawab tantangan yang diberikan algoritma pertukaran kunci Diffie Hellman.
Skema RSA sendiri mengadopsi dari skema block cipher, dimana sebelum dilakukan enkripsi, plainteks yang ada dibagi – bagi menjadi blok – blok dengan panjang yang sama, dimana plainteks dan cipherteksnya berupa integer(bilangan bulat) antara 1 hingga n, dimana n berukuran biasanya sebesar 1024 bit, dan panjang bloknya sendiri berukuran lebih kecil atau sama dengan log(n) +1 dengan basis 2.
Fungsi enkripsi dan dekripsinya dijabarkan dalam fungsi berikut :
C = Me mod n ( fungsi enkripsi )
M = Cd mod n (fungsi dekripsi)
C = Cipherteks
M = Message / Plainteks
e = kunci publik
d= kunci privat
n = modulo pembagi(akan dijelaskan lebih lanjut )
Proses Enkripsi Pesan
Misalkan pada suatu kasus si A ingin mengirim pesan m kepada si B. A mengubah m menjadi angka n < N, menggunakan protokol yang sebelumnya telah disepakati dan dikenal sebagai padding schemePadding scheme harus dibangun secara hati-hati sehingga tidak ada nilai dari m yang menyebabkan masalah keamanan. Contohnya, jika kita ambil contoh sederhana dari penampilan ASCII dari m dan menggabungkan bit-bit secara bersama-sama akan menghasilkan n, kemudian pessan yang berisi ASCII tunggal karakter NUL (nilai numeris 0) akan menghasilkan n = 0, yang akan menghasilkan ciphertext 0 apapun itu nilai dari e dan N yang digunakan.
Maka A mempunyai nilai n dan mengetahui N dan e, yang telah diumumkan oleh B. A kemudian menghitung ciphertext c yang terkait pada n :
c = ne mod N (1)
Perhitungan tersebut dapat diselesaikan dengan menggunakan metode exponentation by squaring, yaitu sebuah algoritma yang dipakai untuk komputasi terhadap sejumlah nilai integer yang besar dengan cepat. Kemudian A mengirimkan nilai c kepada B.
Proses Dekripsi Pesan

B sudah menerima c dari A, dan mengetahui kunci privat yang digunakan B. B kemudian mengembalikan nilai n dari c dengan langkah-langkah sebagai berikut :
n = cd mod N (2)

Perhitungan diatas akan menghasilkan n, dengan begitu B dapat mengembalikan pesan semula m.
Prosedur dekripsi bekerja karena
cd ≡ (n)d ≡ (mod N) (3)

Kemudian, karena ed ≡ 1 (mod p-1) dan ed ≡ 1 (mod q-1), hasil dari Fermat's little theorem.
ned ≡ n (mod p) (4)
dan
ned ≡ n (mod q) (5)
            Karena p dan q merupakan bilangan prima yang berbeda, mengaplikasikan Chinese remainder theorem akan menghasilkan dua macam kongruen
ned ≡ n (mod pq) (6)
Serta
cd ≡ n (mod N) (7)
FLOWCHART ALGORITMA RSA





3.      Berikan deskripsi dari study kasus terkait tema kelompok dan pada bagian mana dari study kasus tersebut Algoritma kelompok diterapkan!

STUDI KASUS
Pada Mei 2017 di daerah Palembang terjadi pembobolan rekening bank via internet banking. Pelaku pembobolan rekening ini dilakukan oleh dua pelaku dengan korban milik nasabah di sebuah Bank BUMN. Uang milik korban yang dibobol diperkirakan sejumlah 1.2 Miliar. Kedua pelaku ini melakukan modusnya hingga melakukan penggantian nomor HP korban untuk melakukan verifikasi transaksi ke operator. Pelaku mengganti nomor HP korban bermodal KTP palsu. Untuk mengatasi ini Bank dapat menggunakan Algoritma RSA sebagai salah satu cara mengamankan system keamanan bank




4.      Berikan sintaks dari algoritma (prosen enkripsi dan deskripsi) kelompok dengan bahasa pemrograman yang dipilih!

//  main.cpp
//  RSA
//
//  Created by Sergiy on 06.06.17.

#include <iostream>
#include <math.h>
#include <string.h>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>


bool isPrime(long int prime);
long int calculateE( long int t );
long int greatestCommonDivisor( long int e, long int t );
long int calculateD( long int e, long int t );
long int encrypt( long int i, long int e, long int n );
long int decrypt(long int i, long int d, long int n );

int main( )
{
    long int p, q, n, t, e, d;
   
    long int encryptedText[100];
    memset(encryptedText, 0, sizeof(encryptedText));
   
    long int decryptedText[100];
    memset(decryptedText, 0, sizeof(decryptedText));
   
    bool flag;
   
    std::string msg;
   
    std::cout << "Welcome to RCA program" << std::endl << std::endl;
   
    // C??????? ????????? ? ?????????? ??????
   
    // 1. ?????????? ??? ????????? ????????? ??????? ????? p ? q ????????? ???????
   
    do
    {
        std::cout << "Enter a Prime number  p :" << std::endl;
        std::cin >> p;
        flag = isPrime( p );
       
        if ( flag == false )
        {
            std::cout << "\nWRONG INPUT (This number is not Prime. A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself)\n" << std::endl;
        }
    } while ( flag == false );
   
   
    do
    {
        std::cout << "Enter a Prime number  q :" << std::endl;
        std::cin >> q;
        flag = isPrime( q );
       
        if ( flag == false )
        {
            std::cout << "\nWRONG INPUT (This number is not Prime. A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself)\n" << std::endl;
        }
    } while ( flag == false);
   
    // 2. ??????????? ?? ???????????? n = p · q, ??????? ?????????? ???????.
    n = p * q;
    std::cout << "\nResult of computing n = p*q = " << n << std::endl;
   
    // 3. ??????????? ???????? ??????? ?????? ?? ????? n: f(n) = (p-1)·(q-1)
    t = ( p - 1 ) * ( q - 1 );
    std::cout << "Result of computing Euler's totient function:\t t = " << t << std::endl;
   
    // 4. ?????????? ????? ????? e ( 1 < e < f(n) ), ??????? ??????? ?? ????????? ??????? ?????? (t)
    //         ????? e ?????????? ???????? ???????????
    e = calculateE( t );
   
    // 5. ??????????? ????? d, ???????????????? ???????? ? ????? e ?? ?????? f(n), ?? ???? ?????, ??????????????? ?????????:
    //    d · e = 1 (mod f(n))
    d = calculateD( e, t );
   
    // 6. ???? {e, n} ??????????? ? ???????? ????????? ????? RSA
    std::cout << "\nRSA public key is (n = " << n << ", e = " << e << ")" << std::endl;
   
    // 7. ???? {d, n} ?????? ???? ????????? ????? RSA ? ???????? ? ???????
    std::cout << "RSA private key is (n = " << n << ", d = " << d << ")" << std::endl;
   
   
   
    std::cout << "\nEnter Message to be encryped:" << std::endl;
   
    // there is a newline character left in the input stream, so we use ignore()
    std::cin.ignore();
   
    std::getline( std::cin, msg );
   
    std::cout << "\nThe message is: " << msg << std::endl;
   
   
    // encryption
   
    for (long int i = 0; i < msg.length(); i++)
    {
        encryptedText[i] = encrypt( msg[i], e, n);
    }
   
    std::cout << "\nTHE ENCRYPTED MESSAGE IS:" << std::endl;
   
    for ( long int i = 0; i < msg.length(); i++ )
    {
        printf( "%c", (char)encryptedText[i] );
    }
   
   
    //decryption
   
    for (long int i = 0; i < msg.length(); i++)
    {
        decryptedText[i] = decrypt(encryptedText[i], d, n);
    }
   
    std::cout << "\n\nTHE DECRYPTED MESSAGE IS:" << std::endl;
   
    for (long int i = 0; i < msg.length(); i++)
    {
        printf( "%c", (char)decryptedText[i] );
    }
   
   
    std::cout << std::endl << std::endl;
   
    //system("PAUSE");
   
    return 0;
}

bool isPrime( long int prime)
{
    long int i, j;
   
    j = (long int)sqrt((long double)prime);
   
    for ( i = 2; i <= j; i++)
    {
        if ( prime % i == 0 )
        {
            return false;
        }
    }
   
    return true;
}

long int calculateE( long int t )
{
    // ?????????? ????? ????? e ( 1 < e < t ) // ??????? ??????? ?? ????????? ??????? ?????? (t)
   
    long int e;
   
    for ( e = 2; e < t; e++ )
    {
        if (greatestCommonDivisor( e, t ) == 1 )
        {
            return e;
        }
    }
   
    return -1;
}

long int greatestCommonDivisor( long int e, long int t )
{
    while ( e > 0 )
    {
        long int myTemp;
       
        myTemp = e;
        e = t % e;
        t = myTemp;
    }
   
    return t;
}

long int calculateD( long int e, long int t)
{
    // ??????????? ????? d, ???????????????? ???????? ? ????? e ?? ?????? f(n), ?? ???? ?????, ??????????????? ?????????:
    //    d · e = 1 (mod f(n))
   
    long int d;
    long int k = 1;
   
    while ( 1 )
    {
        k = k + t;
       
        if ( k % e == 0)
        {
            d = (k / e);
            return d;
        }
    }
   
}


long int encrypt( long int i, long int e, long int n )
{
    long int current, result;
   
    current = i - 97;
    result = 1;
   
    for ( long int j = 0; j < e; j++ )
    {
        result = result * current;
        result = result % n;
    }
   
    return result;
}

long int decrypt(long int i, long int d, long int n)
{
    long int current, result;
   
    current = i;
    result = 1;
   
    for ( long int j = 0; j < d; j++ )
    {
        result = result * current;
        result = result % n;
    }
   
    return result + 97;
getch();

}


5.      Berikan link dari blog anggota kelompok anda!

       
6.      Berikan referensi sumber dari materi!
https://gist.github.com/basavesh/3885594 DI akses pada 10 Desember 2018




A.     Analisa Algoritma

1.   Deskripsikan hubungan KSK dengan Kiriftografi algoritma Kelompok dan  algoritma kelompok lain yang memiliki kemiripan cara kerja!
•Security System atau keamanan sistem informasi merupakan hal yang sangat penting dalam mengelola sistem informasi, tujuannya adalah untuk mencegah ancaman terhadap sistem serta mendeteksi dan memperbaiki segala kerusakan sistem. Namun, masih banyak kampus atau instansi tidak terlalu memperhatikan masalah keamanan ini.

•Semisal : Data akademik yang merupakan data yang sangat penting di dalam perguruan tinggi. Dengan data tersebut akan melancarkan berbagai urusan baik mahasiswa, dosen dan pegawai kampus. Jika dirusak oleh orang yang tidak bertanggung jawab, kampus akan kewalahan dalam memulihkan data tersebut. Bisa jadi data itu akan hilang selamanya tidak bisa diperbaiki kembali.
•Penerapan Keamanan Sistem Komputer dalam Bidang Pendidikan sampai sekarang masih tergolong lemah, dikarenakan banyak pengguna yang lalai atau tidak peduli dengan keamanan data mereka di lingkungan pembelajaran. Hal ini tidak menutup kemungkinan akan adanya peretasan / pembobolan keamanan jaringan & kemanan data.

•Untuk mencegah hal yang tidak di inginkan maka Diterapkanlah Algoritma Vignere Cipher ke data – data sensitif yang disimpan ke dalam Sistem Komputer. Dengan adanya fungsi Enkripsi dari Algoritma Vignere Cipher ini maka, walaupun data di curi oleh pihak luar, data data tersebut tidak dapat di baca karena masih dalam bentuk Ciphertext. Pengguna lain, selain administrator yang tidak memiliki Key yang dibutuhkan untuk men Dekripsikan data data tersebut tidak akan bisa membaca Data dan Informasi yang sudah di Enkripsi, dengan ini Data dan Informasi masih terjaga kerahasiaanya.

2.   Jelaskan tentang Algoritma kelompok lain mulai dari: pengertian, sejarah, cara kerjanya (proses ekripsi dan proses deskripsi), gambarkan flowchart berikan penjelasan!
ALGORITMA VIGNERE CIPHER :
*PENGERTIAN DAN SEJARAHNYA :
•Vigenere Cipher adalah suatu algoritma kriptografi klasik yang ditemukan oleh Giovan BattistaBellaso. Beliau menuliskan metodenya tersebut pada bukunya yang berjudul La Cifra del. Sig. GiovanBattista Bellaso pada tahun 1553. Nama vigenere sendiri diambil dari seorang yang bernama Blaisede Vigenere. Nama vigenere diambil sebagai nama algoritma ini karena beliau menemukan kunciyang lebih kuat lagi untuk algoritma ini dengan metode autokey cipher meskipun algoritma dasarnyatelah ditemukan lebih dahulu oleh Giovan Battista Bellaso.Algoritma ini menjadi terkenal karenacukup sulit dipecahkan. Matematikawan Charles LutwidgeDodgson menyatakan bahwa algoritma ini tidak terpecahkan. Pada tahun 1917, ilmuwan Amerikamenyebutkan bahwa Vigenere cipheradalah sesuatu yang tidak mungkin untukditranslasikan.
*CARA KERJA :
    Dalam Vigenere Chiper, digunakan suatu sistem karakter (Character set) yang digunakan untuk mendefinisikan nilai karakter-karakter yang digunakan dalam proses enkripsi maupun dekripsi. Sistem karakter yang umum digunakan yaitu alfabet, dimana huruf A mewakili angka 0, B mewakili angka 1, dan seterusnya hingga Z mewakili angka 26.

Proses dasar pada Kriptografi :
1.Enkripsi, adalah sebuah proses menjadikan pesan yang dapat dibaca (plaintext) menjadi pesan acak yang tidak dapat dibaca (ciphertext).
      •Ci = (Pi-Ki) mod 26
atau
      •Ci = ( Pi + Ki ) – 26, kalau hasil penjumlahan Pi dan Ki lebih dari 26 

2.Dekripsi, merupakan proses kebalikan dari enkripsi dimana proses ini akan mengubah ciphertext menjadi plaintext dengan menggunakan algoritma "pembalik" dan key yang sama
•Pi = (Ci-Ki) mod 26
atau
•Pi = ( Ci – Ki ) + 26, kalau hasil pengurangan Ci dengan Ki minus


KETERANGAN :
Ci = nilai desimal karakter ciphertext ke-i
Pi = nilai desimal karakter plaintext ke-i
Ki = nilai desimal karakter kunci ke-i
Nilai desimal karakter: A=0 B=1 C=2 ... Z=25

*FLOWCHART
ENKRIPSI


1.Mulai
2.Input Plaintext dan Key
3.Looping For sebanyak panjang karakter dari Plaintext
4.Jumlahkan Plaintext dan Key pada Index yang sama
5.Jika hasil penjumlahan lebih dari 26, maka hasil dikurangi 26
6.Jika tidak maka lanjutkan Looping
7.Tampilkan Ciphertext
8.Selesai





DEKRIPSI


1.            Mulai
2.            Input Ciphertext dan Key
3.            Looping For sebanyak panjang karakter dari Ciphertext
4.            Kurangi Ciphertext dan Key pada Index yang sama
5.            Jika hasil pengurangan kurang dari 0 (negatif), maka hasil ditambah 26
6.            Jika tidak maka lanjutkan Looping
7.            Tampilkan Plaintext
8.            Selesai



3.   Lakukan pengetesan kedua algoritma tersebut dengan menggunakan sintaks bahasa pemrograman yang dipilih! Dengan inputan plantext berupa nama dan NIM (prosen enkripsi dan deskripsi)!
menggunakan Bahasa pemrograman C++

#include <bits/stdc++.h>

using namespace std;


int main()
{

string charset="abcdefghijklmnopqrstuvwxyz";
int ukuranCharset = charset.length();

cout << "Keterangan : " << endl << endl
                << "1 : Enkripsi " << endl
                << "2 : Dekripsi" << endl << endl
                << ">";

int input;

cin >> input;

if (input==1) // input 1 berarti untuk enkripsi
{
               string plaintext, key;

               cin >> plaintext >> key ; // input plainteks terlebih dahulu, lalu input key
              
               char chipertext[plaintext.length()]; // membuat chiperteks sebagai array berukuran sama dengan plainteks

               for (int i = 0; i < plaintext.length(); i++)
               {
                              int indeksPlaintext, indeksKey;
                              for (int j=0;j<ukuranCharset;j++)
                              {
                                             //mencari nilai dari karakter plainteks
                                             if (plaintext[i] == charset[j])
                                                            indeksPlaintext=j+1; // karena indeks array basis 0, jadi ditambah 1 agar indeks 1

                                             if (key[i%key.length()]== charset[j])
                                                            indeksKey = j+1; // karena indeks array basis 0, jadi ditambah 1 agar indeks 1
                              }

                              chipertext[i] = charset[(indeksPlaintext+indeksKey)%ukuranCharset-1];

               }

               cout << chipertext;
}
else if (input==2) //input 2 berarti untuk dekripsi
{
               string chipertext, key;
              
               cin >> chipertext >> key; // input chiperteks terlebih dahulu, lalu input key

               char plaintext[chipertext.length()];

               for (int i=0;i<chipertext.length();i++)
               {
                              int indeksChipertext, indeksKey;

                              for (int j=0;j<ukuranCharset;j++)
                              {
                                             if (chipertext[i] == charset[j])
                                                            indeksChipertext=j+1; // karena indeks array basis 0, jadi ditambah 1 agar indeks 1

                                             if (key[i%key.length()]== charset[j])
                                                            indeksKey = j+1; // karena indeks array basis 0, jadi ditambah 1 agar indeks 1
                              }

                              plaintext[i] = charset[(indeksChipertext-indeksKey + ukuranCharset)%ukuranCharset-1];
                              // ditambah ukuranCharset untuk menjamin nilai yang di mod tidak negatif, karena jika negatif, maka hasil akan berbeda
               }

               cout << plaintext;
}
cin >> input; // agar program tidak langsung tertutup
return 0;
}



4.   Lakukan perbandingan kedua algoritma tersebut dengan menemukan 3 persamaan dan 3 perbedaan nya!


5.   Berikan link dari blog anggota kelompo klain tersebut!


6.   Berikan referensi sumber dari materi!

  • http://sun-coolin.blogspot.co.id/2012/07/algoritma-kriptografi-klasik-vigenere-cipher.html
  • https://id.wikipedia.org/wiki/Sandi_Vigenère
  • www.academia.edu/.../Vigenere_Cipher_adalah_suatu_algoritma_kriptografi_klasik
  • pendidikan-1993.blogspot.com/2012/01/keamanan-dalam-pendidikan.html
  • www.deuhyoedergi.org/index.php/DEUHYOED/article/viewFile/422/422422


B.       Buat kesimpulan berdasarkan penemuan persamaan dan perbedaan pada study kasus A dan B
!