Categories: Intel Developer Zone

Contoh Aplikasi Enkripsi Data di Android

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

* Artikel ini adalah hasil sindikasi konten dengan Intel Developer Zone. Artikel asli bisa dilihat di link ini.

Share
Published by
Faisal Ramadoni

Recent Posts

Cisco Peringkatkan Kerentanan Kritis Dalam Cisco Data Center Network Manager

Cisco mengungkapkan tiga kerentanan dalam layanannya. Ini dia penanganannya!

January 7, 2020

Optimal idM Meluncurkan OptimalCloud Partner Platform

Ini ulasan mengenai keuntungan OptimalCloud Partner Platform, platform baru milik Optimal idM!

January 6, 2020

Google Siapkan Coral Accelerator Module dan Coral Dev Board Mini untuk Tahun 2020

Google kenalkan dua koleksi baru dari Coral. Dua koleksi baru ini bakal menambah kemampuan pengembangan…

January 3, 2020

Google Kembangkan Model Kecerdasan Buatan Untuk Deteksi Kanker Payudara

Raksasa Google baru saja mengembangkan sistem pemindaian kanker payudara berbasis kecerdasan buatan. Bagaimana hasilnya, berikut…

January 3, 2020

Google Dorong Fitur Bubbles Notifications Ke Versi Stabil

Meski dikenalkan bersamaan dengan Android 10 Beta, sampai kini Bubbles Notifications masih dalam tahap pengembangan.…

December 31, 2019

Samsung Siapkan Lima Proyek dan Empat Startup C-Lab Untuk CES 2020

Samsung akan kembali memamerkan hasil program C-Lab ke ajang CES 2020. Ini dia proyek dan…

December 30, 2019