private static void initialize() {
    final File dbPropsFile = PropertiesUtil.findConfigFile("db.properties");
    final Properties dbProps;

    if (EncryptionSecretKeyChecker.useEncryption()) {
      StandardPBEStringEncryptor encryptor = EncryptionSecretKeyChecker.getEncryptor();
      dbProps = new EncryptableProperties(encryptor);
      try {
        dbProps.load(new FileInputStream(dbPropsFile));
      } catch (FileNotFoundException e) {
        throw new CloudRuntimeException(
            "db.properties file not found while reading DB secret key", e);
      } catch (IOException e) {
        throw new CloudRuntimeException("Erroe while reading DB secret key from db.properties", e);
      }

      String dbSecretKey = dbProps.getProperty("db.cloud.encrypt.secret");
      if (dbSecretKey == null || dbSecretKey.isEmpty()) {
        throw new CloudRuntimeException("Empty DB secret key in db.properties");
      }

      s_encryptor = new StandardPBEStringEncryptor();
      s_encryptor.setAlgorithm("PBEWithMD5AndDES");
      s_encryptor.setPassword(dbSecretKey);
    } else {
      throw new CloudRuntimeException("Trying to encrypt db values when encrytion is not enabled");
    }
  }
 public static String encrypt(String plain) {
   if (!EncryptionSecretKeyChecker.useEncryption() || (plain == null) || plain.isEmpty()) {
     return plain;
   }
   if (s_encryptor == null) {
     initialize();
   }
   String encryptedString = null;
   try {
     encryptedString = s_encryptor.encrypt(plain);
   } catch (EncryptionOperationNotPossibleException e) {
     s_logger.debug("Error while encrypting: " + plain);
     throw e;
   }
   return encryptedString;
 }