public HashSyslogMessageModifier(HashSyslogMessageModifierConfig config)
      throws SyslogRuntimeException {
    this.config = config;

    if (this.config == null) {
      throw new SyslogRuntimeException("Hash config object cannot be null");
    }

    if (this.config.getHashAlgorithm() == null) {
      throw new SyslogRuntimeException("Hash algorithm cannot be null");
    }

    try {
      MessageDigest.getInstance(config.getHashAlgorithm());

    } catch (NoSuchAlgorithmException nsae) {
      throw new SyslogRuntimeException(nsae);
    }
  }
  public static final HashSyslogMessageModifier createSHA512() {
    HashSyslogMessageModifier sha512 =
        new HashSyslogMessageModifier(HashSyslogMessageModifierConfig.createSHA512());

    return sha512;
  }
  public static final HashSyslogMessageModifier createSHA256() {
    HashSyslogMessageModifier sha256 =
        new HashSyslogMessageModifier(HashSyslogMessageModifierConfig.createSHA256());

    return sha256;
  }
  public static final HashSyslogMessageModifier createSHA384() {
    HashSyslogMessageModifier sha384 =
        new HashSyslogMessageModifier(HashSyslogMessageModifierConfig.createSHA384());

    return sha384;
  }
  public static final HashSyslogMessageModifier createMD5() {
    HashSyslogMessageModifier md5 =
        new HashSyslogMessageModifier(HashSyslogMessageModifierConfig.createMD5());

    return md5;
  }