In case you didn't know, the 'Exit Function' in each of your functions are
not doing anything, you can delete them!
The Return statement itself will exit the function, so the " : Exit
Function" is dead code!
Consider using OrElse here:
If hash Is Nothing OrElse hash = "" Then Return Nothing
To check for Nothing you need (should) use the Is operator, the OrElse will
short circuit and not do the second part of the comparison if not needed.
Which is important in statements such as:
If hash Is Nothing OrElse hash.Length = 0 Then Return Nothing
As if hash is nothing, the hash.Length function will get a
NullReferenceException. The OrElse won't bother checking hash.Length when
hash is Nothing.
Hope this helps