Skip to content

Commit

Permalink
feat:menambahkan pembelajaran kriptografi
Browse files Browse the repository at this point in the history
  • Loading branch information
yusuf601 committed Oct 8, 2024
1 parent 64b15bf commit f43853a
Show file tree
Hide file tree
Showing 2 changed files with 134 additions and 0 deletions.
80 changes: 80 additions & 0 deletions Kriptografi/caesar cipher.cpp
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;
}
54 changes: 54 additions & 0 deletions Kriptografi/readme.md
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.

0 comments on commit f43853a

Please sign in to comment.