Metode & Algoritma | List Tutorials | Source Code | About | Sitemap
Konsultan Tesis
Bimbingan dan Konsultasi Tesis Informatika bersama team Project Graduate Indonesia. Konsultasi hanya untuk yang sudah me-Like FB kami (Silahkan LIKE tombol ini jika belum).
. Scroll kebawah untuk memasukan kode AntiSpam Protection. Hasil konsultasi akan kami kirimkan ke email Anda.

Membuat Algoritma Enkripsi AES di Android




.


Metode dan Algoritma | Membuat Algoritma Enkripsi AES di Android . Anda bisa melakukan konsultasi tentang Membuat Algoritma Enkripsi AES di Android melalui form di samping kanan !!!

Membuat Algoritma Enkripsi AES pada AndroidMembuat Algoritma Enkripsi AES di Android ini penulis buat karena ada permintaan dari teman. Sebelumnya kita pernah mencoba Membuat Enkripsi MD5 di Android. Sejujurnya penulis kurang ahli dalam enkripsi, karena algoritmanya benar-benar ruwet dan memusingkan ^_^'.

Berbeda dengan algoritma MD5 yang merupakan algoritma enkripsi satu arah, yaitu setelah diencrypt maka tidak dapat didecrypt lagi. Algoritma enkripsi AES ini dua arah, artinya bisa untuk mengenkripsi dengan kata kunci tertentu, untuk kemudian bisa dideskripsi kembali ke teks semula menggunakan kata kunci yang sama.

Kita mulai saja, buat Project Android baru di Eclipse, kemudian pada layout activity_main.xml kita beri kode program seperti ini :


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Original" />

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >

<requestFocus />
</EditText>

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Encrypt" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Encrypted" />

<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Decrypt" />

</LinearLayout>

Selanjutnya pada program utama, MainActivity.java kita beri kode program seperti di bawah ini :

package com.amijaya.android_aes_encryption;

import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

// nuramijaya@gmail.com
// http://cariprogram.blogspot.com

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//String crypto = SimpleCrypto.encrypt(masterpassword, cleartext)
try {
EditText editText1 = (EditText)findViewById(R.id.editText1);
EditText editText2 = (EditText)findViewById(R.id.editText2);
String crypto = SimpleCrypto.encrypt("rahasia", editText1.getText().toString());
editText2.setText(crypto);
editText1.setText("");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});

Button button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//String cleartext = SimpleCrypto.decrypt(masterpassword, crypto)
try {
EditText editText1 = (EditText)findViewById(R.id.editText1);
EditText editText2 = (EditText)findViewById(R.id.editText2);
String cleartext = SimpleCrypto.decrypt("rahasia", editText2.getText().toString());
editText1.setText(cleartext);
editText2.setText("");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}

/**
* Usage:
* <pre>
* String crypto = SimpleCrypto.encrypt(masterpassword, cleartext)
* ...
* String cleartext = SimpleCrypto.decrypt(masterpassword, crypto)
* </pre>
* @author ferenc.hechler
*/
class SimpleCrypto {

public static String encrypt(String seed, String cleartext) throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] result = encrypt(rawKey, cleartext.getBytes());
return toHex(result);
}

public static String decrypt(String seed, String encrypted) throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] enc = toByte(encrypted);
byte[] result = decrypt(rawKey, enc);
return new String(result);
}

private static byte[] getRawKey(byte[] seed) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(seed);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
return raw;
}


private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(clear);
return encrypted;
}

private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(encrypted);
return decrypted;
}

public static String toHex(String txt) {
return toHex(txt.getBytes());
}
public static String fromHex(String hex) {
return new String(toByte(hex));
}

public static byte[] toByte(String hexString) {
int len = hexString.length()/2;
byte[] result = new byte[len];
for (int i = 0; i < len; i++)
result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();
return result;
}

public static String toHex(byte[] buf) {
if (buf == null)
return "";
StringBuffer result = new StringBuffer(2*buf.length);
for (int i = 0; i < buf.length; i++) {
appendHex(result, buf[i]);
}
return result.toString();
}
private final static String HEX = "0123456789ABCDEF";
private static void appendHex(StringBuffer sb, byte b) {
sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f));
}

}

Pada file konfigurasi AndroidManifest.xml tidak perlu kita ubah, misalnya akan berisi seperti ini :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amijaya.android_aes_encryption"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.amijaya.android_aes_encryption.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>


Setelah dijalankan, hasilnya :

Membuat Algoritma Enkripsi AES pada Android

Jika kita masukkan kata atau kalimat, kemudian kita klik tombol Encrypt, maka akan tampil hasil enkripsinya di TextBox bawahnya.

Membuat Algoritma Enkripsi AES pada Android Proses Decrypt

Sedangkan jika kita klik tombol Decrypt maka teks yang sudah terenkripsi di TextBox bawah akan kembali terdeskripsi ke TextBox sebelah atas.

Program selengkapnya dapat anda download disini. Jika mengalami kesulitan download, ini caranya.

Semoga cukup bermanfaat.

Artikel lain yang sejenis :

Membuat Enkripsi MD5 di Android.




Source Code ActionScript AS3 ASP.NET AJAX C / C++ C# Clipper COBOL ColdFusion DataFlex Delphi Emacs Lisp Fortran FoxPro Java J2ME JavaScript JScript Lingo MATLAB Perl PHP PostScript Python SQL VBScript Visual Basic 6.0 Visual Basic .NET Flash MySQL Oracle Android
Related Post :


Project-G
Judul: Membuat Algoritma Enkripsi AES di Android
Rating: 100% based on 99998 ratings. 5 user reviews.
Ditulis Oleh hank2

Anda sedang membaca artikel tentang Membuat Algoritma Enkripsi AES di Android, Semoga artikel tentang Membuat Algoritma Enkripsi AES di Android ini sangat bermanfaat bagi teman-teman semua, jangan lupa untuk mengunjungi lagi melalui link Membuat Algoritma Enkripsi AES di Android.


Posted by: Metode Algoritma Updated at: 21.37

{ 1 komentar... Views All / Post Comment! }

Unknown mengatakan...

Maaf agan, kok dekripnya ga bisa ya?

Posting Komentar

Label