14.5. Verifying that a String Is Uncorrupted During Transmission

Problem

You have some text that will be sent across a network to another machine for processing. It is critical that you are able to verify that this text remains intact and unmodified when it arrives at its destination.

Solution

Calculate a hash value from this string and append it to the string before it is sent to its destination. Once the destination receives the string, it can remove the hash value and determine whether the string is the same one that was initially sent. The CreateStringHash method takes a string as input, adds a hash value to the end of it, and returns the new string:

public class HashOps { public static string CreateStringHash(string unHashedString) { byte[] encodedUnHashedString = Encoding.Unicode.GetBytes(unHashedString); SHA256Managed hashingObj = new SHA256Managed( ); byte[] hashCode = hashingObj.ComputeHash(encodedUnHashedString); string hashBase64 = Convert.ToBase64String(hashCode); string stringWithHash = unHashedString + hashBase64; hashingObj.Clear( ); return (stringWithHash); } public static bool TestReceivedStringHash(string stringWithHash, out string originalStr) { // Code to quickly test the handling of a tampered string //stringWithHash = stringWithHash.Replace('a', 'b'); if (stringWithHash.Length < 45) { originalStr = null; return (true); } string hashCodeString = stringWithHash.Substring(stringWithHash.Length - 44); string unHashedString = stringWithHash.Substring(0, stringWithHash.Length ...

Get C# Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.