Если хочется хешировать парамтры, то можно делать как амазон сам у себя делает в SIgnature V4 (
https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html):
To construct the canonical query string, complete the following steps:
Sort the parameter names by character code point in ascending order. Parameters with duplicate names should be sorted by value. For example, a parameter name that begins with the uppercase letter F precedes a parameter name that begins with a lowercase letter b.
URI-encode each parameter name and value according to the following rules:
Do not URI-encode any of the unreserved characters that RFC 3986
defines: A-Z, a-z, 0-9, hyphen ( - ), underscore ( _ ), period ( . ), and tilde ( ~ ).
Percent-encode all other characters with %XY, where X and Y are hexadecimal characters (0-9 and uppercase A-F). For example, the space character must be encoded as %20 (not using '+', as some encoding schemes do) and extended UTF-8 characters must be in the form %XY%ZA%BC.
Double-encode any equals ( = ) characters in parameter values.
Build the canonical query string by starting with the first parameter name in the sorted list.
For each parameter, append the URI-encoded parameter name, followed by the equals sign character (=), followed by the URI-encoded parameter value. Use an empty string for parameters that have no value.
Append the ampersand character (&) after each parameter value, except for the last value in the list.