In a recent project I needed the ability to take an incoming string value and calculate its SHA1 Hash in order to tell if the value had been altered in some way. Instead of creating a special utility class to accomplish this I figured a clean solution would be to just add an extension method to the String class. Here is what I came up with.
Ā Ā Ā Ā Ā Ā Ā ///
Ā Ā Ā Ā Ā Ā Ā /// Calculates the SHA1 hash and returns it as a base64 string.
Ā Ā Ā Ā Ā Ā Ā ///
Ā Ā Ā Ā Ā Ā Ā /// Source string to hash
Ā Ā Ā Ā Ā Ā Ā /// Base64 Hash or null.
Ā Ā Ā Ā Ā Ā Ā /// Occurs when value or key is null or empty.
Ā Ā Ā Ā Ā Ā Ā public static string GetSha1Hash(this string value)
Ā Ā Ā Ā Ā Ā Ā {
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (string.IsNullOrEmpty(value))
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā throw new ArgumentException("String is empty and not hashable.");
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Byte[] bytes = Encoding.UTF8.GetBytes(value);
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Byte[] computedHash = new SHA1CryptoServiceProvider().ComputeHash(bytes);
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return Convert.ToBase64String(computedHash);
Ā Ā Ā Ā Ā Ā Ā }

Published by