/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.mail.internal; import de.rcenvironment.core.utils.encryption.EncryptionFactory; import de.rcenvironment.core.utils.encryption.PassphraseBasedEncryption; import de.rcenvironment.core.utils.encryption.EncryptionFactory.PassphraseBasedEncryptionAlgorithm; /** * Helper class to obfuscate passwords with a fixed passphrase. * * @author Tobias Rodehutskors */ public final class PasswordObfuscationHelper { /** * TODO Should we be this honest? * * This is the passphrase that is used to obfuscate the stored SMTP mail server password. */ private static final String PASSPHRASE = "K2sVlb1THNqkvbTnCVhW"; private static PassphraseBasedEncryption encryption = null; private PasswordObfuscationHelper() { } private static synchronized void init() { if (encryption == null) { EncryptionFactory factory = new EncryptionFactory(); encryption = factory.createPassphraseBasedEncryption(PassphraseBasedEncryptionAlgorithm.AES); } } /** * @param password The password that should be obfuscated. * @return A obfuscated version of the given password or null if the password is null. */ public static String obfuscate(String password) { init(); if (password == null) { return null; } return encryption.encrypt(password, PASSPHRASE); } /** * @param obfuscatedPassword The obfuscated password that should be deobfuscated. * @return The original password or null if the obfuscatedPassword is null. */ public static String deobfuscate(String obfuscatedPassword) { init(); if (obfuscatedPassword == null) { return null; } return encryption.decrypt(obfuscatedPassword, PASSPHRASE); } }