public static String sign(final String algorithmName, final String key, final String data) {
        if (Objects.isNull(key) || Objects.isNull(data)) {
            throw new NullPointerException("Key or data is null.");
        }

        return Optional.ofNullable(SIGN_FUNCTION_MAP.get(algorithmName))
                .orElseThrow(() -> new UnsupportedOperationException("unsupported sign algorithm:" + algorithmName))
                .sign(key, data);
    }
Returns signature of data as hex string (lowercase).

@param algorithmName the name of sign algorithm
@param key           key
@param data          data to sign
@return signature
@throws NullPointerException          if key or data is null
@throws UnsupportedOperationException if algorithmName isn't supported
shenyu-common/src/main/java/org/apache/shenyu/common/utils/SignUtils.java