public static function hash( $hashTarget = null, $hashType = self::SHA1, $hashLength = self::MAX_HASH_LENGTH, $rawOutput = false )
    {
        $_value = ( null === $hashTarget ) ? static::generate( $hashLength ) : $hashTarget;

        switch ( $hashType )
        {
            case static::MD5:
                $_hash = md5( $_value, $rawOutput );
                break;

            case static::SHA1:
                $_hash = sha1( $_value, $rawOutput );
                break;

            case static::CRC32:
                $_hash = crc32( $_value );
                break;

            default:
                $_hash = hash( $hashType, $_value, $rawOutput );
                break;
        }

        return $_hash;
    }