Maison  >  Article  >  Java  >  Cryptographie à chiffrement symétrique en Java

Cryptographie à chiffrement symétrique en Java

WBOY
WBOYavant
2023-09-13 15:49:021372parcourir

Cryptographie à chiffrement symétrique en Java

Présentation

Le cryptage symétrique, également connu sous le nom de cryptage par clé, est une méthode de cryptage dans laquelle la même clé est utilisée pour le cryptage et le déchiffrement. Cette méthode de cryptage est rapide et efficace et adaptée au cryptage de grandes quantités de données. L’algorithme de chiffrement symétrique le plus couramment utilisé est Advanced Encryption Standard (AES).

Java fournit un support important pour le chiffrement symétrique, y compris les classes du package javax.crypto, telles que SecretKey, Cipher et KeyGenerator.

Cryptage symétrique en Java

La classe Java Cipher du package javax.crypto fournit des fonctions cryptographiques pour le cryptage et le déchiffrement. Il constitue le cœur du framework Java Cryptozoology Extensions (JCE).

En Java, la classe Cipher fournit la fonction de cryptage symétrique et la classe KeyGenerator est utilisée pour générer des clés pour le cryptage symétrique.

La traduction chinoise de

Exemple

est :

Exemple

Regardons un exemple de chiffrement symétrique simple AES implémenté en Java−

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Main {
   public static void main(String[] args) throws Exception {

      // Generate key
      SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();
   
      // Original message
      String originalMessage = "Hello, world!";
   
      // Create Cipher instance and initialize it to ENCRYPT_MODE
      Cipher cipher = Cipher.getInstance("AES");
      cipher.init(Cipher.ENCRYPT_MODE, secretKey);
   
      // Encrypt the message
      byte[] encryptedMessage = cipher.doFinal(originalMessage.getBytes(StandardCharsets.UTF_8));
   
      // Convert the encrypted message to Base64 encoded string
      String encodedMessage = Base64.getEncoder().encodeToString(encryptedMessage);
   
      System.out.println("Original Message: " + originalMessage);
      System.out.println("Encrypted Message: " + encodedMessage);
   
      // Reinitialize the cipher to DECRYPT_MODE
      cipher.init(Cipher.DECRYPT_MODE, secretKey);
   
      // Decrypt the message
      byte[] decryptedMessage = cipher.doFinal(Base64.getDecoder().decode(encodedMessage));
   
      System.out.println("Decrypted Message: " + new String(decryptedMessage, StandardCharsets.UTF_8));
   }
}

Sortie

Lorsque vous exécutez le programme, vous verrez un résultat similaire à celui-ci : 

Original Message: Hello, world!
Encrypted Message: iWohhm/c89uBVaJ3j4YFkA==
Decrypted Message: Hello, world!
La traduction chinoise de

Explication

est :

Explication

Dans le code ci-dessus, nous générons d'abord la clé secrète pour le cryptage AES à l'aide de la classe KeyGenerator.

Ensuite, nous créons une instance de la classe Cipher pour AES et l'initialisons à ENCRYPT_MODE à l'aide de la clé secrète.

Ensuite, nous définissons un message brut "Hello, world!" et le chiffrons à l'aide de la méthode doFinal de Cipher. Nous convertissons également les octets du message chiffré en une chaîne codée en Base64 pour faciliter leur traitement.

Ensuite, nous imprimons le message original et le message crypté sur la console.

Pour démontrer le décryptage, nous réinitialisons le mot de passe sur DECRYPT_MODE en utilisant la même clé et déchiffrons le message crypté. Enfin, nous imprimons le message déchiffré sur la console.

Étant donné qu'une clé secrète unique est générée à chaque fois que vous exécutez le programme, le message crypté sera différent à chaque fois.

La chose importante à noter ici est que le message déchiffré est identique au message original, ce qui indique que notre processus de cryptage et de décryptage fonctionne correctement.

Points à retenir

Le cryptage symétrique est un outil puissant pour maintenir la confidentialité, mais il est important de se rappeler que vos données sont aussi sécurisées que vos clés. Si une personne non autorisée obtient votre clé secrète, elle peut décrypter vos données. Il est donc crucial de conserver la clé secrète en sécurité.

Conclusion

La mise en œuvre du chiffrement symétrique en Java est un processus simple, grâce au package javax.crypto. Comprendre comment utiliser les classes Cipher et KeyGenerator pour chiffrer et déchiffrer des données peut améliorer considérablement la sécurité de vos applications Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer