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# | Char.GetHashCode() Method with Examples
This method is used to return the hash code for this instance. Syntax: public override int GetHashCode (); Return Value: This method returns a 32-bit signed integer hash code. Below programs illustrate the use of Char.GetHashCode() Method: Example 1: C/C++ Code // C# program to demonstrate // Char.G
1 min read
Classify strings from an array using Custom Hash Function
Given an array of strings arr[] consisting of N strings, the task is to categorize the strings according to the hash value obtained by adding ASCII values % 26 of the characters in the string. Examples: Input: arr[][] = {"geeks", "for", "geeks"}Output:geeks geeksforExplanation:The hash value of stri
8 min read
String Partitioning for Character Equality
Given a string S of size N, the task is to divide the given string into two non-empty strings s1 and s2 such that the number of distinct characters in s1 is equal to s2. Examples: Input: s = "aacaba"Output: 2Explanation: => Dividing s into s1 and s2 as ("aac", "aba"), the left string contains 2 d
7 min read
What is String - Definition & Meaning
In Data Structures and Algorithms (DSA), a String can also be defined as a sequence of characters, stored in contiguous memory locations, terminated by a special character called the null character '\0'. Characteristics of String: In the context of Data Structures and Algorithms, strings have the fo
3 min read
C# | How to get the HashCode for the string
GetHashCode() method is used to get the hash code of the specified string. When you apply this method to the string this method will return a 32-bit signed integer hash code of the given string. Syntax: public override int GetHashCode (); Return Value: The return type of this method is System.Int32.
2 min read
Hashing in Data Structure
Hashing is a technique used in data structures that efficiently stores and retrieves data in a way that allows for quick access. Hashing involves mapping data to a specific index in a hash table (an array of items) using a hash function. It enables fast retrieval of information based on its key. The
3 min read
Find maximum occurring character in a string
Given string str. The task is to find the maximum occurring character in the string str. Examples: Input: geeksforgeeksOutput: eExplanation: 'e' occurs 4 times in the string Input: testOutput: tExplanation: 't' occurs 2 times in the string Return the maximum occurring character in an input string us
9 min read
C# | String Operators
The string is an array of characters. The String class represents the text as a series of Unicode characters and it is defined in the .NET base class library. The main use of the String class is to provide the properties, operators and methods so that it becomes easy to work with strings.There are t
4 min read
C# String Properties
In C#, a String is an array of characters. The string class represents the text as a series of Unicode characters. It provides various properties and methods so that it becomes easy to work with strings. There are two properties in the string class: Chars[Int32]: Used to get the Char object at a spe
4 min read
Difference between String and string in C#
String is an alias for System.String class and instead of writing System.String one can use String which is a shorthand for System.String class and is defined in the .NET base class library. The size of the String object in memory is 2GB and this is an immutable object, we can not modify the charact
2 min read