Enkripsi penting karena dapat memproteksi data secara aman dari pihak lain yang tidak kamu inginkan. Enkripsi data telah menjadi topik yang ngetren di kalangan komunitas keamanan. Dikarenakan perangkat mobile kini menyimpan informasi yang semakin berharga dibanding sebelumnya, enkripsi menjadi penting untuk memastikan keamanan informasi.
Artikel ini mengenalkan API enkripsi data yang tersedia di baik Java ataupun OpenSSL. Kedua solusi tersebut dapat bekerja di sistem operasi Android.
Direkomendasikan untuk mencoba fitur-fitur dan mengkompilasi kode saat anda membaca artikel ini.
Kode dan Penjelasan Enkripsi data
Hika kamu ingin mengenkripsi data di Android kamu memiliki dua pilihan: Java Crypto API dan OpenSSL API. Di bagian ini akan ditunjukkan bagaimana caranya mengenkripsi data menggunakan kedua pilihan tersebut.
Java Crypto API
Menggunakan Java Crypto API di Android sangat mudah. Pertama, kamu harus membuat kunci untuk enkripsinya. Ada class KeyGenerator di paket javax.crypto yang dapat melakukan hal ini untuk kamu.
// membuka stream untuk membaca origFilepath. Kita akan menyimpan konten yang dienkripsi ke outfile InputStream fis = new FileInputStream(origFilepath); File outfile = new File(encFilepath); int read = 0; if (!outfile.exists()) outfile.createNewFile(); FileOutputStream encfos = new FileOutputStream(outfile); // Buat Cipher menggunakan "AES" Cipher encipher = Cipher.getInstance("AES"); encipher.init(Cipher.ENCRYPT_MODE, mKey); CipherOutputStream cos = new CipherOutputStream(encfos, encipher); // cata waktu yang digunakan untuk mengenkripsi file start = System.nanoTime(); Log.d(TAG, String.valueOf(start)); byte[] block = new byte[mBlocksize]; while ((read = fis.read(block,0,mBlocksize)) != -1) { cos.write(block,0, read); } cos.close(); stop = System.nanoTime(); Log.d(TAG, String.valueOf(stop)); seconds = (stop - start) / 1000000;// untuk milidetik Log.d(TAG, String.valueOf(seconds)); fis.close();
OpenSSL API
Mengenkripsi data di OpenSSL pada Android memerlukan menulis kode native C yang dapat diakses di Java melalui pemanggilan JNI. Ini memerlukan lebih banyak usaha namun kamu akan mendapatkan performa yang lebih bagus sebagai hasilnya.
Pertama, mari membuat kunci dan iv.
unsigned char cKeyBuffer[KEYSIZE/sizeof(unsigned char)]; unsigned char iv[] = "01234567890123456"; int opensslIsSeeded = 0; if (!opensslIsSeeded) { if (!RAND_load_file("/dev/urandom", seedbytes)) { return -1; } opensslIsSeeded = 1; } if (!RAND_bytes((unsigned char *)cKeyBuffer, KEYSIZE )) { }
Lalu, kita dapat menggunakan kunci yang dibuat (cKeyBuffer) untuk mengenkripsi sebuah file. Inisiasi EVP dengan memberikannya kunci dan iv kamu. Lalu berikan potongan-potongan byte ke fungsi EVP_EncryptUpdate. Potongan byte terakhir dari file kamu perlu dierikan ke fungsi EVP_EncryptFinal_ex.
if (!(EVP_EncryptInit_ex(e_ctx, EVP_aes_256_cbc(), NULL, cKeyBuffer, iv ))) { ret = -1; printf( "ERROR: EVP_ENCRYPTINIT_EXn"); } // telusuri file, dan enkripsi if ( orig_file != NULL ) { origData = new unsigned char[aes_blocksize]; encData = new unsigned char[aes_blocksize+EVP_CIPHER_CTX_block_size(e_ctx)]; // potensi untuk enkripsi 16 byte lebih panjang dibanding aslinya printf( "Encoding file: %sn", filename); bytesread = fread(origData, 1, aes_blocksize, orig_file); // baca byte dari file, kemudian kirim ke sandi while ( bytesread ) { if (!(EVP_EncryptUpdate(e_ctx, encData, &len, origData, bytesread))) { ret = -1; printf( "ERROR: EVP_ENCRYPTUPDATEn"); } encData_len = len; fwrite(encData, 1, encData_len, enc_file ); // baca lebih banyak byte bytesread = fread(origData, 1, aes_blocksize, orig_file); } // tahap akhir enkripsi if (!(EVP_EncryptFinal_ex(e_ctx, encData, &len))) { ret = -1; printf( "ERROR: EVP_ENCRYPTFINAL_EXn"); } encData_len = len; fwrite(encData, 1, encData_len, enc_file ); // bebaskan sandi EVP_CIPHER_CTX_free(e_ctx);
Kesimpulan
Dengan mengimplementasikan kode seperti pada contoh di artikel ini, kamu akan dengan cepat belajar bagimana cara menggunakan baik Java Crypto API dan OpenSSL API untuk mengenkripsi data di Android berbasis Intel.
Sumber dan Artikel Terkait
- Kemanan dan Enkripsi Intel
- Intel Developer Zone – Android
- Unduh contoh kode aplikasi pada artikel ini
* Artikel ini adalah hasil sindikasi konten dengan Intel Developer Zone. Artikel asli bisa dilihat di link ini.