All those sites return valid values.
Sites 4 and 5 use \n
as line break.
EDIT
I see you edited your question to add Encoding.Default.GetBytes
in the code example.
This is interesting, because you see there is some string to byte array conversion
to run before computing the hash. Line breaking (\n
or \r\n
) as well as text encoding are both ways to interpret your string to get different bytes values.
Once you have the same bytes as input, all hash results will be identical.
EDIT 2:
If you're dealing with bytes directly, then just compute the hash with those bytes. Don't try to provide different hash values; a hash must only return one value. If your clients have a different hash value than yours, then they are doing it wrong.
That being said, I'm pretty sure it won't ever happen because there isn't any way to misinterpret a byte array.