Hash Function for String data in C#
Last Updated :
05 Nov, 2024
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);
}
}
}
OutputHash 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());
}
}
}
}
OutputSHA256 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());
}
}
}
}
OutputMD5 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;
}
}
}
OutputHash 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;
}
}
}
OutputHash 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.
Similar Reads
C# Tutorial C# (pronounced "C-sharp") is a modern, versatile, object-oriented programming language developed by Microsoft in 2000 that runs on the .NET Framework. Whether you're creating Windows applications, diving into Unity game development, or working on enterprise solutions, C# is one of the top choices fo
4 min read
Introduction to .NET Framework The .NET Framework is a software development framework developed by Microsoft that provides a runtime environment and a set of libraries and tools for building and running applications on Windows operating systems. The .NET framework is primarily used on Windows, while .NET Core (which evolved into
6 min read
C# Interview Questions and Answers C# is the most popular general-purpose programming language and was developed by Microsoft in 2000, renowned for its robustness, flexibility, and extensive application range. It is simple and has an object-oriented programming concept that can be used for creating different types of applications.Her
15+ min read
C# Dictionary Dictionary in C# is a generic collection that stores key-value pairs. The working of Dictionary is quite similar to the non-generic hashtable. The advantage of a Dictionary is, that it is a generic type. A dictionary is defined under System.Collections.Generic namespace. It is dynamic in nature mean
5 min read
C# List Class In C#, the List<T> class represents the list of objects that can be accessed by index. It comes under the System.Collections.Generic namespace. List class can be used to create a collection of different types like integers, strings, etc. List<T> class also provides the methods to search,
7 min read
C# Delegates A delegate is an object which refers to a method or you can say it is a reference type variable that can hold a reference to the methods. It provides a way which tells which method is to be called when an event is triggered. For example, if you click on a Button on a form (Windows Form application),
6 min read
ASP.NET Interview Questions and Answer ASP.NET is a popular framework by Microsoft for building fast and scalable web applications. It allows developers to create dynamic websites, services, and apps, using server-side code and offering a user-friendly experience. Trusted by companies like Microsoft, Dell, and Accenture, ASP.NET is used
15+ min read
C# .NET Framework (Basic Architecture and Component Stack) C# (C-Sharp) is a modern, object-oriented programming language developed by Microsoft in 2000. It is a part of the .NET ecosystem and is widely used for building desktop, web, mobile, cloud, and enterprise applications. This is originally tied to the .NET Framework, C# has evolved to be the primary
6 min read
C# Data Types Data types specify the type of data that a valid C# variable can hold. C# is a strongly typed programming language because in C# each type of data (such as integer, character, float, and so forth) is predefined as part of the programming language and all constants or variables defined for a given pr
7 min read
C# Arrays An array is a group of like-typed variables that are referred to by a common name. And each data item is called an element of the array. The data types of the elements may be any valid data type like char, int, float, etc. and the elements are stored in a contiguous location. Length of the array spe
8 min read