Laporan Praktikum Kriptografi Pertemuan 2 : KRIPTOGRAFI VIGENERE CIPHER

Page 1

“ KRI PTOGRAFI VI GENERECI PHER”

HAMI ZANHI BATULLAH NI M. 1 90001 801 5

PROGRAM STUDII NFORMATI KA FAKUL TASTEKNOLOGII NDUSTRI UNI VERSI TASAHMADDAHLAN TAHUN2022




Nama NIM Praktikum Kriptografi

: Hamizan Hibatullah : 1900018015 : Kamis, 13.50

KEGIATAN PRAKTIKUM 2

2.6 LANGKAH PRAKTIKUM Aturan Penilaian (Total Skor: 100): No CPL CPMK Pertanyaan 1. CPL-03 CPMK-01 Selesaikan Langkah praktikum 1–9

Dokumen Pendukung Skor Hasil praktikum Langkah 1-9

Algoritma Vigenere Chipper Fungsi Enkripsi Begin Function encryption(string t) for i = 0, j = 0 to t.length() - 1 char c = t[i] if (c >= 'a' and c <= 'z') c = c + 'A' - 'a' else if (c < 'A' or c > 'Z') continue output = output + (c + k[j] ) % 26 + 'A' j = (j + 1) % k.length() return output End Fungsi Dekripsi Begin Function decryption(string t) for i = 0, j = 0 to t.length() - 1 char c = t[i] if (c >= 'a' and c <= 'z') c = c + 'A' - 'a' else if (c < 'A' or c > 'Z') continue output =output + (c - k[j] + 26) % 26 + 'A' j = (j + 1) % k.length() return output End


Source Code #include <iostream> #include <string> using namespace std; class Vig { public: string k; Vig(string k) { for (int i = 0; i < k.size(); ++i) { if (k[i] >= 'A' && k[i] <= 'Z') this->k += k[i]; else if (k[i] >= 'a' && k[i] <= 'z') this->k += k[i] + 'A' - 'a'; } } string encryption(string t) { string output; for (int i = 0, j = 0; i < t.length(); ++i) { char c = t[i]; if (c >= 'a' && c <= 'z') c += 'A' - 'a'; else if (c < 'A' || c > 'Z') continue; output += (c + k[j] - 2 * 'A') % 26 + 'A'; //added 'A' to bring it in range of ASCII alphabet [ 65-90 | A-Z ] j = (j + 1) % k.length(); } return output; } string decryption(string t) { string output; for (int i = 0, j = 0; i < t.length(); ++i) { char c = t[i]; if (c >= 'a' && c <= 'z') c += 'A' - 'a'; else if (c < 'A' || c > 'Z') continue; output += (c - k[j] + 26) % 26 + 'A';//added 'A' to bring it in range of ASCII alphabet [ 65-90 | A-Z ] j = (j + 1) % k.length(); } return output; } }; int main() { Vig v("UAD"); string ori ="Ihsan Fadhilah"; string encrypt = v.encryption(ori); string decrypt = v.decryption(encrypt); cout << "Original Message: "<<ori<< endl; cout << "Encrypted Message: " << encrypt << endl; cout << "Decrypted Message: " << decrypt << endl; }



Buatlah sebuah enkripsi dan deksripsi secara manual dengan menggunakan metode vigenere chipper: Plaintext Keyboard A=1 B=2 C=3 D=4 E=5

: UDAH DIEM DI RUMAH AJA NGGAK USAH KEMANA MANA : REBAHAN F =6 G =7 H =8 I =9 J =10

P U D A H K R E B A

K = 11 L = 12 M = 13 N = 14 O = 15

P = 16 Q = 17 R = 18 S = 19 T = 20

D I E M H A N R

U = 21 V = 22 W = 23 X = 24 Y = 25 D I E B

Z = 26

R U M A H A H A N R

Ciphertext: [U+R] [D+E] [A+B] [H+A] [D+H] [I+A] [E+N]

= [21 + 18] = [4 + 5] = [1 +2] = [8 + 1] = [4 + 8] = [9 + 1] = [5 + 14]

= 39 =9 =3 =9 = 12 = 10 = 19

= 39 – 26 = 9 MOD 26 = 3 MOD 26 = 9 MOD 26 = 12 MOD 26 = 10 MOD 26 = 19 MOD 26

Maka didapatkan Ciphertext MICI LJSE IK SCNOZ FLB VHUSP WTII YWRCOI NOFF

= 13 =9 =3 =9 = 12 = 10 = 19

=M =I =C =I =L = J =S

A J A E B A

N G G A K H A N R E


Nama NIM Praktikum Kriptografi

: Hamizan Hibatullah : 1900018015 : Kamis, 13.50

POSTEST PRAKTIKUM 2

2.7 POST-TEST Aturan Penilaian (Total Skor: 100): No CPL CPMK Pertanyaan 1. CPL-03 CPMK-01 Dalam source code tersebut belum ada Fungsi Dekripsi untuk Vigenere Chiper, untuk itu buatlah source code fungsi untuk proses dekripsi dengan nama Dvigenere. Jika telah jalan tuliskan dan screenshoot hasilnya

Algoritma Vigenere Chipper Fungsi Dekripsi Begin Function decryption(string t) for i = 0, j = 0 to t.length() - 1 char c = t[i] if (c >= 'a' and c <= 'z') c = c + 'A' - 'a' else if (c < 'A' or c > 'Z') continue output =output + (c - k[j] + 26) % 26 + 'A' j = (j + 1) % k.length() return output End

Skor 100


Screenshoot Hasilnya:

Source code #include<iostream> using namespace std; // Function to extend the key to the length of plaintext string get_full_key(string pt, string k){ if(k.size() >= pt.size()) return k; else{ int psize = pt.size()-k.size(); int ksize = k.size(); while(psize >= ksize){ k += k; psize -= ksize; } k += k.substr(0, psize); return k; } } // Encryption Function string get_encryption(string pt, string k){ string ct = ""; for(int i=0;i<pt.size();i++) ct += (char) (((int)pt[i]-'A' + (int)k[i]-'A') % 26) + 'A'; return ct;


} // Decryption Function string get_decryption(string ct, string k){ string pt = ""; for(int i=0;i<ct.size();i++) pt += (char) ((((int)ct[i]- 'A' - (k[i] -'A')) + 26) % 26) + 'A'; return pt; } int main(){ string plaintext; string key; // The Plaintext cout << " Masukkan Plaintext : "; cin >> plaintext; // The key cout << " Masukkan Key : "; cin >> key; // Function call to extend the key size key = get_full_key(plaintext, key); cout<<" -------------------------"<<endl; cout<<" THE PLAINTEXT: "<< plaintext <<endl; cout<<" THE KEY: "<< key <<endl; // Function call to encode the data string ciphertext = get_encryption(plaintext, key); cout<<" THE CIPHERTEXT: "<< ciphertext <<endl; // Function call to decode the data plaintext = get_decryption(ciphertext, key); cout<<" THE DECODED PLAINTEXT: "<< plaintext <<endl; return 1; }



Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.