Search

Cara Enkripsi AES 256 Menggunakan Java

  • Share this:
Cara Enkripsi AES 256 Menggunakan Java

AES 256 (Advanced Encryption Standard 256-bit) adalah sebuah jenis algoritma kriptografi yang digunakan untuk mengamankan data dengan tingkat keamanan tinggi. Ini adalah salah satu jenis algoritma AES yang paling kuat yang tersedia saat ini.

AES sendiri adalah singkatan dari "Advanced Encryption Standard" yang merupakan sebuah standar enkripsi yang dikembangkan oleh National Institute of Standards and Technology (NIST) di Amerika Serikat. Standar ini pertama kali diadopsi pada tahun 2001 dan telah menjadi salah satu algoritma enkripsi yang paling banyak digunakan di dunia.

AES 256-bit mengacu pada panjang kunci yang digunakan dalam enkripsi. Panjang kunci 256-bit berarti bahwa algoritma ini menggunakan kunci yang terdiri dari 256 bit (32 byte) untuk mengenkripsi dan mendekripsi data. Dengan panjang kunci yang sangat panjang ini, AES 256-bit dianggap sangat aman dan tahan terhadap serangan komputer yang kuat.

AES 256-bit sering digunakan dalam berbagai aplikasi, termasuk enkripsi data pada perangkat keras dan perangkat lunak, keamanan komunikasi internet, dan penyimpanan data yang sensitif. Keamanan tinggi dari AES 256-bit membuatnya menjadi pilihan yang baik untuk melindungi data pribadi dan rahasia.

Berikut contoh enkripsi AES menggunakan JAVA

 

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;

public class AESEncryption {

public static String encrypt(String plainText, String key, String iv) throws Exception {
    // Convert hex strings to byte arrays
    byte[] keyBytes = hexStringToByteArray(key);
    byte[] ivBytes = hexStringToByteArray(iv);

    // Create SecretKeySpec and IvParameterSpec
    SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
    IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);

    // Create AES cipher and initialize for encryption
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec);

    // Encrypt the plaintext
    byte[] encryptedBytes = cipher.doFinal(plainText.getBytes("UTF-8"));

    // Encode the result in base64
    return Base64.getEncoder().encodeToString(encryptedBytes);
}

public static byte[] hexStringToByteArray(String hexString) {
    int len = hexString.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
                             + Character.digit(hexString.charAt(i+1), 16));
    }
    return data;
}

public static String generateRandomString(int length) {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    SecureRandom random = new SecureRandom();
    StringBuilder randomString = new StringBuilder(length);

    for (int i = 0; i < length; i++) {
        int randomIndex = random.nextInt(characters.length());
        char randomChar = characters.charAt(randomIndex);
        randomString.append(randomChar);
    }

    return randomString.toString();
}

public static void main(String[] args) {
    try {
        String randomPlainText = generateRandomString(16); // Ganti 16 dengan panjang plaintext yang Anda inginkan
        String key = "173E07B43874E39883A978C810E63FBF403858B87CB8A32C3A3E665F03C788ED";
        String iv = "F27D5C9927726BCEFE7510B1BDD3D137";

        String encryptedText = encrypt(randomPlainText, key, iv);
        System.out.println("Random Plaintext: " + randomPlainText);
        System.out.println("Encrypted Text: " + encryptedText);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Admin Silahkan Baca

Admin Silahkan Baca