Tutorial Pemrograman Kriptografi C++ dan Java

Tampilkan postingan dengan label source code. Tampilkan semua postingan
Tampilkan postingan dengan label source code. Tampilkan semua postingan
Zae
IMPLEMENTASI ALGORITMA AUTOKEY CIPHER DAN AES-128 PADA ENKRIPSI FILE
Candra Irawan 1 , De Rosal Ignatius Moses Setiadi 2
1,2 Program Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Dian Nuswantoro
e-mail: 1 candra.irawan@dsn.dinus.ac.id,
2 moses@dsn.dinus.ac.id
ABSTRAK
Kriptografi merupakan suatu bidang studi populer saat ini yang sangat dibutuhkan untuk menjaga keaslian serta keamanan data dari pihak yang tidak berhak untuk mengakses data tersebut. Dalam era digital ini, berbagi informasi seperti file digital meningkat secara signifikan. Untuk melindungi data file dibangunlah aplikasi VertoCrypt berbasis desktop yang dapat mengenkripsi berbagai file teks, gambar, musik, maupun video dengan memanfatkan algoritma Autokey cipher digabung dengan Advanced Encryption Standard (AES-128), kemudian untuk menambah tingkat keamanan, kunci yang digunakan untuk enkripsi dan dekripsi filememanfaatkan fungsi hash SHA-512. Dengan  dimanfaatkannya algoritma-algoritma tersebut, algoritma tidak akan mudah dipecahkan oleh kriptanalis. File yang sudah terenkripsi akan membuat pihak ketiga tidak dapat langsung membaca file karena bit-bit file sudah teracak, dengan demikian data yang tersimpan di dunia maya baik itu komputer pribadi, cloud, atau data yang dibagikan melalui suatu aplikasi akan terlindungi. Dengan metode yang diusulkan didapatkan bahwa waktu eksekusi metode yang digabungkan memakan waktu lebih lama dari implementasi salah satu metode saja. Hasilnya akan memperlama kriptanalis dalam meretas file yang telah terenkripsi.
Kata Kunci: Kriptografi, Autokey Cipher, AES, SHA, Enkripsi File, Dekripsi File

Source : https://www.unisbank.ac.id
Jasa Pembuatan Aplikasi : 085643684138

Zae
Kriptografi Advanced Encryption Standard (AES) Untuk Penyandian File Dokumen
Aditia Rahmat Tulloh, Yurika Permanasari, Erwin Harahap
Program Studi Matematika, FMIPA, Universitas Islam Bandung,
adit.rahmat051994@gmail.com, yurikape@unisba.ac.id, erwin2h@unisba.ac.id

Abstrak. Advanced Encryption Standard (AES) adalah algoritma kriptografi yang menjadi standar algoritma enkripsi kunci simetris pada saat ini. Dalam algoritma kriptografi AES 128, 1blok plainteks berukuran 128 bit terlebih dahulu dikonversi menjadi matriks heksadesimal berukuran 4x4 yang disebut state. Setiap elemen state berukuran 1 byte. Proses enkripsi pada AES merupakan transformasi terhadap state secara berulang dalam 10 ronde. Setiap ronde AES membutuhkan satu kunci hasil dari generasi kunci yang menggunakan 2 transformasi yaitu subtitusi dan transformasi. Pada proses enkripsi AES mengunakan 4 transformasi dasar dengan urutan trasformasi subbytes, shiftrows, mixcolumns, dan addroundkey. Sedangkan pada proses dekripsi mengunakan invers semua transformasi dasar pada algoritma AES kecuali addroundkey dengan urutan transformasi invshiftrows, invsubbytes, addroundkey,dan invmixcolumns. Pada data teks, proses enkripsi diawali dengan mengkonversi teks menjadi kode ASCII dalam bilangan heksadesimal yang dibentuk menjadi matriks byte 4x4. Selanjutnya dilakukan beberapa trnsformasi dasar seperti subbytes, shiftrows, mixcolumns, dan addroundkey. Akan tetapi ketika melakukan trasformasi data yang diproses pada setiap trasformasi berupa data biner dari matriks heksadesimal. Kriptografi AES 128 bit memiliki ruang kunci 2128 yang merupakan nilai yang sangat besar dan dianggap aman untuk digunakan sehingga terhindar dari brute force attack.
Kata Kunci: AES, Penyandian file, Algoritma kunci simetris

Sumber: https://ejournal.unib.ac.id
Video Pengembangan Aplikasi Algortima AES-256 dengan Java

Zae
Zae
Zae
Pada kesempatan ini saya mau berbagi tutorial coding algoritma kriptografi di C++ dan Java
Silahkan yang mau mencoba, namun mohon maaf baru beberapa saja yang baru saya bagi. Sabar yah yang lain.

C++ Algoritma Simetrik

Sebelum mencoba, yang perlu disiapkan 
a. Install QT 
b. Install QT Creator
c  Install Visual Studio 2010
d. Download library crypto botan 1.10.8 and build 

C++ Algoritma Simetrik
  1. C++ AES 256
  2. C++ blowfish
  3. C++ camelia
  4. C++ cast
  5. C++ des
  6. C++ idea
  7. C++ kasumi
  8. C++ rc5
  9. C++ rc6
  10. C++ safer
  11. C++ serpent
  12. C++ skipjact
  13. C++ twofish
  14. C++ tea
  15. C++ xtea

C++ Algoritma Hash

  1. C++ Md5
  2. C++ SHA1
  3. C++ SHA256
  4. C++ Tiger
  5. C++ Whirlpool
Untuk Java
Terlebih dulu install netbeans yah

Java Algoritma Simetrik
  1. AES 256
Java Algoritma Hash
  1. Md5
  2. SHA1
  3. SHA256
  4. Tiger
  5. Whirlpool

Menerima Jasa Pembuatan Aplikasi Kriptografi dan Steganografi, silahkan hubungi WA di no 085643684138



Zae
Pagi Kriptografers, sebelumnya saya telah menulis tentang "Coding Algoritma AES-256 di QT". Saya menggunakan library botan, kalau di Java kita kenal sebagai BouncyCastle. Saya mau sharing bagaimana caranya build library botan, sedikit agak repot sih daripada Java. Kalau dijava tinggal downlload aja bouncycaste.jar-nya sedangkan kalau di C++, kita harus build terlebih dahulu .dll dan .lib-nya.

Sebelum build apa saja yang dibutuhkan
1. Source botan, silahkan download di http://botan.randombit.net/download.html
2. Pastikan di Windows sudah terinstall Visual Studio (Saya menggunakan visual studio 2010)
3. Instal Python 2.6

Cara Build
1. Buka CMD Visual Studio
2. Jalankan perintah berikut

> python configure.py --cc=msvc (or --cc=gcc for MinGW) [--cpu=CPU]
> nmake
> nmake install
Zae
Pagi Kriptografers, pada kesempatan ini saya mau sharing apa yang telah lakukan yaitu pemrograman AES-256 menggunakan QT.

Sebelumnya apa yang perlu disiapkan
1. Library Botan, silahkan berkunjung ke http://botan.randombit.net/download.html.
2. Framwork QT, saya menggunakan QT 4.8.5 visual studio 2010

Berikut Source Code yang saya gunakan
AutoSeeded_RNG rng;SymmetricKey key(rng, 32); // a random 256-bit keyInitializationVector iv(rng, 16); // a random 256-bit IVPipe pipe(get_cipher("AES-256/CBC", key, iv, ENCRYPTION), new Hex_Encoder);pipe.process_msg("secrets");std::string m1 = pipe.read_all_as_string(0);Pipe pipe2(new Hex_Decoder, get_cipher("AES-256/CBC", key, iv, DECRYPTION));pipe2.process_msg(m1.c_str());std::string m2 = pipe2.read_all_as_string(0);

Semoga bermanfaat yeee...
Zae
Dibawah ini merupakan source code  algoritma AES 128 menggunakan bahasa pemrograman java. Disini inputan atau plainteks nya berupa string, untuk yang file akan saya posting berikutnya. Source saya Run menggunakan Netbeans. Agar source dapat dijalankan, download dulu "The Bouncy Castle Crypto package" ,  silahkan download di SINI. Selanjutkan tambahkan file .jar tersebut di Libraries. 

Berikut source code nya :

package aes;

/**
 *
 * @author zae
 */
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class Main {
  public static void main(String[] args) throws Exception {
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    byte[] input = "tes".getBytes();
    byte[] keyBytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
        0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f };

    SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");

    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");

    System.out.println(new String(input));

    // encryption pass
    cipher.init(Cipher.ENCRYPT_MODE, key);

    byte[] cipherText = new byte[cipher.getOutputSize(input.length)];
    int ctLength = cipher.update(input, 0, input.length, cipherText, 0);
    ctLength += cipher.doFinal(cipherText, ctLength);
    System.out.println(new String(cipherText));
    System.out.println(ctLength);

    // decryption pass
    cipher.init(Cipher.DECRYPT_MODE, key);
    byte[] plainText = new byte[cipher.getOutputSize(ctLength)];
    int ptLength = cipher.update(cipherText, 0, ctLength, plainText, 0);
    ptLength += cipher.doFinal(plainText, ptLength);
    System.out.println(new String(plainText));
    System.out.println(ptLength);
  }
}

Penjelasan dari source code diatas adalah

* Input berupa string, dalam kasus ini, saya meng-enkrip : "tes"
   byte[] input = "tes".getBytes();

*Kunci yang dipakai adalah "123456789abcdef"
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");

dimana keyBytes adalah array byte yang isinya kunci
byte[] keyBytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; 

* algoritma yang dipakai adalah AES, dalam hal ini AES 128, karena kunci yang dipakai 128 bit
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");

Setelah di Run maka hasilnya sebagai berikut
run:
tes                 //output
System.out.println(new String(input));
O�, qX(PNN�y �    //output System.out.println(new String(cipherText));
16                  //output System.out.println(ctLength);
tes                 //output System.out.println(new String(plainText));
3                   //output System.out.println(ptLength);

Selamat dicoba
 
Zaenal Suhardono