Open In App

Hash Function for String data in C#

Last Updated : 05 Nov, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In C#, hash functions are used to convert input data (like strings) into a fixed-size numerical value, commonly known as a hash code. This hash code can be utilized for various purposes, including data retrieval in hash tables, data integrity verification, and ensuring efficient storage and comparison operations.

Example

Input: "Hello, Geeks!"
Output: 1077004745 (This will vary based on the hash function used)

Syntax

public override int GetHashCode();                          # Using GetHashCode Method

Using GetHashCode Method

The GetHashCode method is a built-in function that returns the hash code for the current instance of the string.

Syntax

public override int GetHashCode();

Example

C#
using System;

namespace HashFunctionExample {
    class Program {
        static void Main(string[] args) {
            string input = "Hello, Geeks!";
            int hashCode = input.GetHashCode();
            Console.WriteLine("Hash Code: {0}", hashCode);
        }
    }
}

Output
Hash Code: 1077004745

Other Method’s Include:

Using SHA256 Hash Algorithm

The SHA256 class from the System.Security.Cryptography namespace provides a more secure way to compute the hash value of a string.

Syntax:

public static SHA256 Create();

Example

C#
using System;
using System.Security.Cryptography;
using System.Text;

namespace HashFunctionExample {
    class Program {
        static void Main(string[] args) {
            string input = "Hello, Geeks!";
            using (SHA256 sha256Hash = SHA256.Create()) {
                byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
                StringBuilder builder = new StringBuilder();
                foreach (byte b in bytes) {
                    builder.Append(b.ToString("x2")); // Convert to hexadecimal string
                }
                Console.WriteLine("SHA256 Hash: {0}", builder.ToString());
            }
        }
    }
}

Output
SHA256 Hash: ec3a1612824c04a774ac0d81b3e97fb1c03c0c7e1c51117f9bc4ec1cfa07484b

Using MD5 Hash Algorithm

The MD5 class is another hashing algorithm, although it is not recommended for security-sensitive applications due to vulnerabilities.

Syntax

public static MD5 Create();

Example:

C#
using System;
using System.Security.Cryptography;
using System.Text;

namespace HashFunctionExample {
    class Program {
        static void Main(string[] args) {
            string input = "Hello, Geeks!";
            using (MD5 md5Hash = MD5.Create()) {
                byte[] bytes = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
                StringBuilder builder = new StringBuilder();
                foreach (byte b in bytes) {
                    builder.Append(b.ToString("x2")); // Convert to hexadecimal string
                }
                Console.WriteLine("MD5 Hash: {0}", builder.ToString());
            }
        }
    }
}

Output
MD5 Hash: f050f21f12381c503f1b17b452027274

Hash Function Using ASCII Values

This method computes a hash code by summing the ASCII values of each character in the string and taking the modulus with the size of an array.

Syntax

static int HashFunction(string s, string[] array);

Example:

C#
using System;

namespace HashFunctionExample {
    class Program {
        static void Main(string[] args) {
            string input = "Hello, Geeks!";
            string[] values = new string[50];
            int hashCode = HashFunction(input, values);
            values[hashCode] = input;
            Console.WriteLine("Hash Code using ASCII Values: {0}", hashCode);
        }

        static int HashFunction(string s, string[] array) {
            int total = 0;
            char[] c = s.ToCharArray();
            for (int k = 0; k < c.Length; k++)
                total += (int)c[k];
            return total % array.Length;
        }
    }
}

Output
Hash Code using ASCII Values: 4

Hash Function Using Horner’s Rule

This method creates a polynomial hash function using Horner’s Rule to reduce the likelihood of collisions.

Syntax

static int HashFunction2(string s, string[] array);

Example:

C#
using System;

namespace HashFunctionExample {
    class Program {
        static void Main(string[] args) {
            string input = "Hello, Geeks!";
            string[] values = new string[50];
            int hashCode = HashFunction2(input, values);
            values[hashCode] = input;
            Console.WriteLine("Hash Code using Horner's Rule: {0}", hashCode);
        }

        static int HashFunction2(string s, string[] array) {
            long total = 0;
            char[] c = s.ToCharArray();
            for (int k = 0; k < c.Length; k++)
                total = (31 * total + (int)c[k]) % array.Length;
            return (int)total;
        }
    }
}

Output
Hash Code using Horner's Rule: 34

Conclusion

Hash functions are vital for string data handling in C#. The methods demonstrated above provide different ways to generate hash codes, each serving unique purposes. The GetHashCode method is useful for quick hash code generation, while SHA256 and MD5 offer more secure hashing options for data integrity verification. Additionally, using ASCII values and Horner’s Rule provides alternative ways to hash strings for applications that may require custom implementations.




Next Article
Practice Tags :

Similar Reads