Heim >Java >javaLernprogramm >So implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java

So implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java

WBOY
WBOYOriginal
2023-09-19 14:54:241587Durchsuche

So implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java

So implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java

Einführung:
Bei Netzwerkanwendungen und Datenübertragung ist die Datensicherheit von entscheidender Bedeutung. Verschlüsselungsalgorithmen sind eines der wichtigen Mittel zum Schutz der Datensicherheit. AES (Advanced Encryption Standard) ist derzeit einer der am häufigsten verwendeten symmetrischen Verschlüsselungsalgorithmen mit hoher Sicherheit, Effizienz und Flexibilität. In diesem Artikel wird erläutert, wie Sie mithilfe der Programmiersprache Java den AES-Verschlüsselungsalgorithmus zum Schutz der Datensicherheit implementieren.

  1. Einführung in den AES-Verschlüsselungsalgorithmus
    Der AES-Verschlüsselungsalgorithmus ist ein symmetrischer Schlüsselverschlüsselungsalgorithmus, der denselben Schlüssel für die Verschlüsselung und Entschlüsselung verwendet. Es verschlüsselt Datenblöcke und verschleiert die Daten durch mehrere Runden von Substitutions- und Permutationsoperationen. Der AES-Algorithmus akzeptiert drei Schlüssellängen: 128 Bit, 192 Bit und 256 Bit. In diesem Artikel verwenden wir zur Beispieldemonstration einen 128-Bit-Schlüssel.
  2. Umgebungsvorbereitung
    Bevor wir beginnen, müssen wir die folgende Umgebung vorbereiten:
  3. Java-Entwicklungsumgebung (JDK)
  4. Java-Entwicklungstools (wie Eclipse oder IntelliJ IDEA)
  5. Java-Bibliothek für AES-Verschlüsselungsalgorithmus
  6. Importieren Verwandte Bibliotheken
    Bevor wir Java zur Implementierung des AES-Verschlüsselungsalgorithmus verwenden, müssen wir die relevanten Bibliotheksdateien importieren. In Java kann der AES-Verschlüsselungsalgorithmus mithilfe der Bibliothek javax.crypto implementiert werden. Wir müssen die folgenden Bibliotheksdateien importieren:

    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;
  7. Implementierung der AES-Verschlüsselungs- und Entschlüsselungsmethode

    public class AESUtil {
     private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";
     private static final String SECRET_KEY_ALGORITHM = "PBKDF2WithHmacSHA256";
     private static final int ITERATION_COUNT = 65536;
     private static final int KEY_LENGTH = 128;
     private static final int IV_LENGTH = 16;
    
     public static byte[] encrypt(String plaintext, String password) throws Exception {
         byte[] salt = generateSalt();
         PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, ITERATION_COUNT, KEY_LENGTH);
         SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(SECRET_KEY_ALGORITHM);
         SecretKey secretKey = secretKeyFactory.generateSecret(pbeKeySpec);
         byte[] iv = generateIV();
         Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
         cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(iv));
         byte[] ciphertext = cipher.doFinal(plaintext.getBytes("UTF-8"));
         byte[] encrypted = new byte[iv.length + salt.length + ciphertext.length];
         System.arraycopy(iv, 0, encrypted, 0, iv.length);
         System.arraycopy(salt, 0, encrypted, iv.length, salt.length);
         System.arraycopy(ciphertext, 0, encrypted, iv.length + salt.length, ciphertext.length);
         return encrypted;
     }
    
     public static String decrypt(byte[] encrypted, String password) throws Exception {
         byte[] iv = new byte[IV_LENGTH];
         System.arraycopy(encrypted, 0, iv, 0, iv.length);
         byte[] salt = new byte[encrypted.length - iv.length - KEY_LENGTH / 8];
         System.arraycopy(encrypted, iv.length, salt, 0, salt.length);
         byte[] ciphertext = new byte[encrypted.length - iv.length - salt.length];
         System.arraycopy(encrypted, iv.length + salt.length, ciphertext, 0, ciphertext.length);
         PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, ITERATION_COUNT, KEY_LENGTH);
         SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(SECRET_KEY_ALGORITHM);
         SecretKey secretKey = secretKeyFactory.generateSecret(pbeKeySpec);
         Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
         cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(iv));
         byte[] plaintext = cipher.doFinal(ciphertext);
         return new String(plaintext, "UTF-8");
     }
    
     private static byte[] generateSalt() {
         byte[] salt = new byte[KEY_LENGTH / 8];
         SecureRandom secureRandom = new SecureRandom();
         secureRandom.nextBytes(salt);
         return salt;
     }
    
     private static byte[] generateIV() {
         byte[] iv = new byte[IV_LENGTH];
         SecureRandom secureRandom = new SecureRandom();
         secureRandom.nextBytes(iv);
         return iv;
     }
    }
  8. Anwendungsbeispiel
    Jetzt können wir den oben implementierten AES-Verschlüsselungsalgorithmus zum Ver- und Entschlüsseln von Daten verwenden.

    public class Main {
     public static void main(String[] args) {
         try {
             String plaintext = "Hello, World!";
             String password = "MySecretPassword";
             byte[] encrypted = AESUtil.encrypt(plaintext, password);
             System.out.println("Encrypted data: " + Arrays.toString(encrypted));
             String decrypted = AESUtil.decrypt(encrypted, password);
             System.out.println("Decrypted data: " + decrypted);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
    }
  9. Fazit
    In diesem Artikel wird erläutert, wie Sie mithilfe der Programmiersprache Java den AES-Verschlüsselungsalgorithmus zum Schutz der Datensicherheit implementieren. Mit dem obigen Beispielcode können wir sensible Daten verschlüsseln und bei Bedarf entschlüsseln. Indem wir dieses Wissen erlernen und verstehen, können wir die Datensicherheit besser schützen und es auf entsprechende Szenarien in der tatsächlichen Entwicklung anwenden.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn