AES 256 in Java

Sheeraz Gul 12 Oktober 2023
  1. AES 256 in Java
  2. Verwenden Sie AES 256, um Daten in Java zu verschlüsseln
  3. Verwenden Sie AES 256 zum Entschlüsseln von Daten in Java
AES 256 in Java

AES 256 ist ein Verschlüsselungs- und Entschlüsselungsalgorithmus. Dieses Tutorial zeigt, wie AES 256 in Java implementiert wird, um die Daten zu verschlüsseln und zu entschlüsseln.

AES 256 in Java

AES ist ein symmetrischer Verschlüsselungsalgorithmus, der einfach in Software, Hardware und eingeschränkten Umgebungen implementiert werden kann. Es bietet auch eine gute Verteidigung gegen verschiedene Angriffe.

Der AES kann 128-Bit-Blöcke in Form einer Blockchiffre mit den Schlüsselgrößen 128, 192 und 256 Bit verarbeiten. Jede Chiffre entschlüsselt oder verschlüsselt Daten in Blöcken von 128 Bit.

Der AES verwendet denselben Verschlüsselungs- und Entschlüsselungsprozess, bei dem sowohl Empfänger als auch Sender dieselben geheimen Schlüssel verwenden und kennen müssen. Dieses Tutorial zeigt, wie Sie Daten mit AES 256 verschlüsseln und entschlüsseln.

Verwenden Sie AES 256, um Daten in Java zu verschlüsseln

Der folgende Java-Code implementiert die AES 256-Verschlüsselung.

package delftstack;

import java.nio.charset.StandardCharsets;
import java.security.spec.KeySpec;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

public class AES_Encrypt {
  private static final String SECRET_KEY = "Delftstack";
  private static final String SALT = "Tutorial";

  public static String encrypt_AES(String StringToEncrypt) {
    try {
      byte[] a = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
      IvParameterSpec Iv_Specifications = new IvParameterSpec(a);

      SecretKeyFactory Secret_Key_Factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
      KeySpec Key_Spec = new PBEKeySpec(SECRET_KEY.toCharArray(), SALT.getBytes(), 65536, 256);
      SecretKey Temp_Secret_Key = Secret_Key_Factory.generateSecret(Key_Spec);
      SecretKeySpec Secret_Key = new SecretKeySpec(Temp_Secret_Key.getEncoded(), "AES");

      Cipher AES_Cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
      AES_Cipher.init(Cipher.ENCRYPT_MODE, Secret_Key, Iv_Specifications);
      return Base64.getEncoder().encodeToString(
          AES_Cipher.doFinal(StringToEncrypt.getBytes(StandardCharsets.UTF_8)));
    } catch (Exception e) {
      System.out.println("Error while encrypting: " + e.toString());
    }
    return null;
  }

  public static void main(String[] args) {
    String Original_String = "www.delftstack.com";

    String Encrypted_String = AES_Encrypt.encrypt_AES(Original_String);

    System.out.println(Original_String);
    System.out.println(Encrypted_String);
  }
}

Die Ausgabe für den obigen Code lautet:

www.delftstack.com
fV2B4Is2xva8C+SieUg01vRbGmZNbyTzV9+llBdv7kM=

Verwenden Sie AES 256 zum Entschlüsseln von Daten in Java

Der folgende Code demonstriert die AES 256-Entschlüsselung in Java.

package delftstack;

import java.nio.charset.StandardCharsets;
import java.security.spec.KeySpec;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

public class AES_Decrypt {
  private static final String SECRET_KEY = "Delftstack";
  private static final String SALT = "Tutorial";

  public static String decrypt_AES(String strToDecrypt) {
    try {
      byte[] a = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
      IvParameterSpec IV_Specifications = new IvParameterSpec(a);

      SecretKeyFactory Secret_Key_Factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
      KeySpec Key_Spec = new PBEKeySpec(SECRET_KEY.toCharArray(), SALT.getBytes(), 65536, 256);
      SecretKey Temp_Secret_Key = Secret_Key_Factory.generateSecret(Key_Spec);
      SecretKeySpec Secret_Key = new SecretKeySpec(Temp_Secret_Key.getEncoded(), "AES");

      Cipher AES_Cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
      AES_Cipher.init(Cipher.DECRYPT_MODE, Secret_Key, IV_Specifications);
      return new String(AES_Cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
    } catch (Exception e) {
      System.out.println("Error while decrypting: " + e.toString());
    }
    return null;
  }
  public static void main(String[] args) {
    String Encrypted_String = "fV2B4Is2xva8C+SieUg01vRbGmZNbyTzV9+llBdv7kM=";

    String Decrypted_String = AES_Decrypt.decrypt_AES(Encrypted_String);

    System.out.println(Encrypted_String);
    System.out.println(Decrypted_String);
  }
}

Der obige Code entschlüsselt eine verschlüsselte Zeichenfolge mit AES 256. Siehe Ausgabe:

fV2B4Is2xva8C+SieUg01vRbGmZNbyTzV9+llBdv7kM=
www.delftstack.com
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java Encryption