Fermer

juillet 29, 2024

Cryptage et déchiffrement des mots de passe à l’aide de Java dans Selenium / Blogs / Perficient

Cryptage et déchiffrement des mots de passe à l’aide de Java dans Selenium / Blogs / Perficient


La sécurité est un aspect crucial de toute application, en particulier lorsqu’il s’agit d’informations sensibles telles que les mots de passe. Le stockage des mots de passe en texte brut peut les exposer à des risques de sécurité potentiels. Dans ce blog, nous expliquerons comment crypter et déchiffrer en toute sécurité les mots de passe en Java et comment intégrer cette fonctionnalité dans vos scripts d’automatisation Selenium.

Pourquoi chiffrer les mots de passe ?

Le cryptage des mots de passe garantit qu’ils sont stockés dans un format illisible, réduisant ainsi le risque d’accès non autorisé. Même si quelqu’un accède aux données stockées, les mots de passe cryptés restent sécurisés, sauf si la clé de cryptage est compromise.

Conditions préalables

Avant de commencer, assurez-vous d’avoir les éléments suivants :

  • Kit de développement Java (JDK) installé.
  • Bibliothèque Selenium WebDriver ajoutée à votre projet.
  • Compréhension de base de Java et Selenium.

Configuration du cryptage et du déchiffrement

Nous utiliserons le package javax.crypto en Java, qui fournit les classes nécessaires au cryptage et au déchiffrement. Nous allons créer deux classes : EncryptionHelper pour gérer le chiffrement et le déchiffrement, et SeleniumTest pour démontrer l’intégration avec Selenium.

Étape 1 : Créer la classe EncryptionHelper

Cette classe contient des méthodes pour générer une clé secrète, chiffrer un mot de passe et déchiffrer un mot de passe.

Importer les packages nécessaires

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import java.util.Base64;

Définir la classe EncryptionHelper

public class EncryptionHelper {

    private static final String ALGORITHM = "AES"; // Algorithm for encryption

    // Generate a secret key

    public static SecretKey generateKey() throws Exception {

        KeyGenerator keyGen = KeyGenerator.getInstance(ALGORITHM);

        keyGen.init(128); // Key size can be 128, 192, or 256 bits

        return keyGen.generateKey();

    }


    // Encrypt the password

    public static String encrypt(String password, SecretKey key) throws Exception {

        Cipher cipher = Cipher.getInstance(ALGORITHM);

        cipher.init(Cipher.ENCRYPT_MODE, key);

        byte[] encryptedPassword = cipher.doFinal(password.getBytes());

        return Base64.getEncoder().encodeToString(encryptedPassword);

    }


    // Decrypt the password

    public static String decrypt(String encryptedPassword, SecretKey key) throws Exception {

        Cipher cipher = Cipher.getInstance(ALGORITHM);

        cipher.init(Cipher.DECRYPT_MODE, key);

        byte[] decodedPassword = Base64.getDecoder().decode(encryptedPassword);

        byte[] originalPassword = cipher.doFinal(decodedPassword);

        return new String(originalPassword);

    }

}

Explication

  • generateKey() : génère une clé secrète à l’aide de l’algorithme AES.
  • encrypt() : crypte le mot de passe donné à l’aide de la clé secrète.
  • decrypt() : Décrypte le mot de passe crypté donné à l’aide de la clé secrète.

Étape 2 : Créer la classe SeleniumTest

Cette classe montre comment utiliser la classe EncryptionHelper pour chiffrer et déchiffrer les mots de passe dans un script Selenium.

Importer les packages nécessaires

import javax.crypto.SecretKey;

Définir la classe SeleniumTest

public class SeleniumTest {

    public static void main(String[] args) {

        try {

            // Generate a secret key

            SecretKey secretKey = EncryptionHelper.generateKey();


            // Original password
            String originalPassword = "password@123";


            // Encrypt the password
            String encryptedPassword = EncryptionHelper.encrypt(originalPassword, secretKey);

            System.out.println("Encrypted Password: " + encryptedPassword);


            // Decrypt the password
            String decryptedPassword = EncryptionHelper.decrypt(encryptedPassword, secretKey);

            System.out.println("Decrypted Password: " + decryptedPassword);


        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

Explication

  • generateKey() : génère une clé secrète pour le cryptage et le déchiffrement.
  • encrypt() : crypte le mot de passe d’origine.
  • decrypt() : Déchiffre le mot de passe crypté dans sa forme originale.

Sortir:

2024 07 25 15 55 09 Eclipse Workspace Seleniumframework Src Practice Seleniumtest.java Eclipse I

Intégration du chiffrement avec Selenium

Pour démontrer l’intégration du cryptage des mots de passe avec un test Selenium, nous allons étendre la classe SeleniumTest pour inclure un simple script d’automatisation de connexion.

Importer des packages Selenium

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

Mettre à jour la classe SeleniumTest

public class SeleniumTest {

    public static void main(String[] args) {

        try {

            // Generate a secret key

            SecretKey secretKey = EncryptionHelper.generateKey();


            // Original password
            String originalPassword = "password@123";


            // Encrypt the password
            String encryptedPassword = EncryptionHelper.encrypt(originalPassword, secretKey);

            System.out.println("Encrypted Password: " + encryptedPassword);


            // Decrypt the password
            String decryptedPassword = EncryptionHelper.decrypt(encryptedPassword, secretKey);

            System.out.println("Decrypted Password: " + decryptedPassword);


            // Set up WebDriver
            System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

            WebDriver driver = new ChromeDriver();


            // Navigate to the login page
            driver.get("https://example.com/login");


            // Find username and password fields
            WebElement usernameField = driver.findElement(By.id("username"));

            WebElement passwordField = driver.findElement(By.id("password"));


            // Enter username and decrypted password
            usernameField.sendKeys("myUsername");

            passwordField.sendKeys(decryptedPassword);


            // Submit the login form
            WebElement loginButton = driver.findElement(By.id("loginButton"));

            loginButton.click();


            // Close the browser
            driver.quit();


        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Avantages du cryptage des mots de passe

  1. Sécurité: Le cryptage des mots de passe garantit qu’ils ne sont pas stockés en texte brut, réduisant ainsi le risque d’accès non autorisé.
  2. Protection des données: Même si les mots de passe cryptés sont exposés, ils restent sécurisés sans la clé de déchiffrement.
  3. Conformité: Aide à se conformer aux normes de sécurité et aux réglementations qui imposent le cryptage des données sensibles.

Conclusion

Le cryptage et le déchiffrement des mots de passe en Java est un processus simple qui améliore considérablement la sécurité de votre application. En intégrant cette fonctionnalité dans vos scripts Selenium, vous pouvez garantir que les données sensibles, telles que les mots de passe, sont traitées en toute sécurité. Suivez les étapes décrites dans ce blog pour mettre en œuvre le cryptage et le déchiffrement des mots de passe dans vos projets et profitez de la tranquillité d’esprit que procure une sécurité renforcée.






Source link