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:
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
- 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é.
- 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.
- 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