-
-
Notifications
You must be signed in to change notification settings - Fork 47
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat:menambahkan pembelajaran kriptografi
- Loading branch information
Showing
2 changed files
with
134 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
#include <iostream> | ||
#include <string> | ||
#include <stdlib.h> | ||
/*sumber ascii | ||
http://sticksandstones.kstrom.com/appen.html | ||
*/ | ||
/* | ||
konsep caesar cipher | ||
https://en.wikipedia.org/wiki/Caesar_cipher | ||
*/ | ||
using namespace std; | ||
string encrypt(string &kata, int &TargetEncrypt){ | ||
string ResultEncrypt = ""; //isi variabel dengan string kosong yang dimana nanti akan di isi oleh engkripsi string kata | ||
for(int i = 0; i < kata.length(); i++){ | ||
if(isupper(kata[i])){ //huruf besar | ||
ResultEncrypt += char((kata[i] - 65 + TargetEncrypt + 26) % 26 + 65); | ||
// mengenkripsi huruf kapital dengan menggeser berdasarkan TargetEncrypt. | ||
} else { //huruf kecil | ||
ResultEncrypt += char((kata[i] - 97 + TargetEncrypt + 26) % 26 + 97); | ||
// mengenkripsi huruf kecil dengan menggeser berdasarkan TargetEncrypt. | ||
} | ||
} | ||
return ResultEncrypt; | ||
/* | ||
Rumus (kata[i] - 65 + TargetEncrypt + 26) % 26 + 65 digunakan untuk menggeser huruf kapital dalam algoritma Caesar Cipher. | ||
Ini mengkonversi kata[i] dari ASCII ke indeks 0–25, menambahkan TargetEncrypt, menjamin hasil positif dengan tambahan 26, | ||
dan akhirnya mengonversi kembali ke ASCII dengan % 26 dan ini juga berlaku untuk huruf kecil yg membedakan hanya code ascii | ||
*/ | ||
} | ||
string decrypt(string &kata, int &TargetDecrypt){ | ||
string ResultDecrypt = ""; | ||
for(int i = 0; i < kata.length(); i++){ | ||
if(isupper(kata[i])){ //huruf kapital | ||
ResultDecrypt += char((kata[i] - 65 - TargetDecrypt + 26) % 26 + 65); | ||
// mendeskripsi huruf kapital dengan menggeser berdasarkan TargetDecrypt | ||
} else { //huruf kecil | ||
ResultDecrypt += char((kata[i] - 97 - TargetDecrypt + 26) % 26 + 97); | ||
// // mendeskripsi huruf kecil dengan menggeser berdasarkan TargetDecrypt | ||
} | ||
} | ||
return ResultDecrypt; | ||
} | ||
int main(){ | ||
string kata; | ||
int TargetEncrypt, TargetDecrypt, pilihan; | ||
bool choice = true; | ||
while(choice){ | ||
system("clear"); //untuk windows pakai system("cls") | ||
cout << "pilihan yang tersedia \n"; | ||
cout << "1.encrypt \n"; | ||
cout << "2.decrypt \n"; | ||
cout << "Masukkan pilihan anda: "; | ||
cin >> pilihan; | ||
cin.ignore(); | ||
while(pilihan < 1 || pilihan > 2){ //jika input pilihan < 1 dan > 2 maka while akan berjalan dan meminta input ulang | ||
cout << "anda memasukkan input yang salah "; | ||
cin >> pilihan; | ||
cin.ignore(); | ||
} | ||
if(pilihan == 1){ | ||
cout << "Masukkan kata: "; | ||
getline(cin,kata); | ||
cout << "Masukkan target: "; | ||
cin >> TargetEncrypt; | ||
string HasilEngkripsi = encrypt(kata,TargetEncrypt); | ||
cout << "hasil engripsi: " << HasilEngkripsi << endl; | ||
} else { | ||
cout << "Masukkan kata: "; | ||
getline(cin,kata); | ||
cout << "Masukkan target: "; | ||
cin >> TargetDecrypt; | ||
string HasilDecrypt = decrypt(kata,TargetDecrypt); | ||
cout << "Hasil decrypt : " << HasilDecrypt << endl; | ||
} | ||
cout << "Lanjutkan? (1 untuk ya, 0 untuk tidak): "; //meminta user untuk melanjutkan progam atau tidak | ||
cin >> choice; | ||
cin.ignore(); | ||
} | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# Pengenalan Kriptografi | ||
|
||
## Daftar Isi | ||
1. [Pendahuluan Kriptografi](#pendahuluan-kriptografi) | ||
2. [Implementasi Kriptografi](#implementasi-kriptografi) | ||
3. [Macam-macam Algoritma Enkripsi/Kriptografi](#macam-macam-algoritma-enkripsi-kriptografi) | ||
|
||
## Pendahuluan Kriptografi | ||
|
||
Kriptografi adalah ilmu dan seni untuk menjaga keamanan informasi. Berasal dari bahasa Yunani, "kryptos" yang berarti tersembunyi, dan "graphein" yang berarti menulis. Kriptografi melibatkan teknik-teknik untuk mengamankan komunikasi dan data dari pihak yang tidak berwenang. | ||
|
||
Tujuan utama kriptografi: | ||
- Kerahasiaan (Confidentiality) | ||
- Integritas Data (Data Integrity) | ||
- Autentikasi (Authentication) | ||
- Nirpenyangkalan (Non-repudiation) | ||
|
||
## Implementasi Kriptografi | ||
|
||
Kriptografi diterapkan dalam berbagai bidang dan teknologi, termasuk: | ||
|
||
1. Komunikasi Aman: Enkripsi pesan instan, email, dan panggilan suara/video. | ||
2. Keamanan Jaringan: VPN, SSL/TLS untuk keamanan web. | ||
3. Penyimpanan Data: Enkripsi hard drive dan cloud storage. | ||
4. Transaksi Keuangan: Keamanan e-commerce dan perbankan online. | ||
5. Blockchain dan Cryptocurrency: Basis dari teknologi mata uang digital. | ||
6. Tanda Tangan Digital: Untuk verifikasi dokumen elektronik. | ||
|
||
## Macam-macam Algoritma Enkripsi/Kriptografi | ||
|
||
1. Algoritma Simetris: | ||
- DES (Data Encryption Standard) | ||
- AES (Advanced Encryption Standard) | ||
- Blowfish | ||
- Twofish | ||
- RC4 (Rivest Cipher 4) | ||
|
||
2. Algoritma Asimetris: | ||
- RSA (Rivest-Shamir-Adleman) | ||
- ECC (Elliptic Curve Cryptography) | ||
- Diffie-Hellman | ||
- ElGamal | ||
|
||
3. Fungsi Hash: | ||
- MD5 (Message Digest 5) | ||
- SHA (Secure Hash Algorithm) family: SHA-1, SHA-2, SHA-3 | ||
|
||
4. Algoritma Klasik: | ||
- Caesar Cipher | ||
- Vigenère Cipher | ||
- Substitution Cipher | ||
- Transposition Cipher | ||
|
||
Setiap algoritma memiliki kekuatan dan kelemahan tersendiri, serta penggunaan yang spesifik dalam konteks keamanan informasi modern. |