I have Googled and checked
How to generate MD5 Hash(32/64 Characters) from an integer?
What I got is there are examples for generating an MD5 hash string from a string or from a byte array. But in my case, I need to get the MD5 hash of an integer.
I know that the GetHashCode()
method is there to get the hash code for an integer. But this method is not applicable in my case.
Do I need to convert the integer to a string or byte array to get the expected MD5 hash string?
Thank you All.After referring all the answers, here i am posting my answer which is containg Generic methods for Generating "MD5 Hash(32/64 Characters) from an integer/string/byte array". Might be helpful for others.
using System;
using System.Security.Cryptography;
using System.Text;
using System.Linq;
namespace ConvertIntToHashCodeConsoleApp
{
class Program
{
static void Main(string[] args)
{
int number = 100;
Console.WriteLine(GetHashMD5(number.ToString()));
Console.WriteLine(GetHashStringFromInteger(number));
Console.Read();
}
/// <summary>
/// Get the Hash Value for MD5 Hash(32 Characters) from an integer
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static string GetHashStringFromInteger(int number)
{
string hash;
using (var md5 = System.Security.Cryptography.MD5.Create())
{
hash = String.Concat(md5.ComputeHash(BitConverter
.GetBytes(number))
.Select(x => x.ToString("x2")));
}
return hash;
}
/// <summary>
/// Get the Hash Value for sha256 Hash(64 Characters)
/// </summary>
/// <param name="data">The Input Data</param>
/// <returns></returns>
public static string GetHash256(string data)
{
string hashResult = string.Empty;
if (data != null)
{
using (SHA256 sha256 = SHA256Managed.Create())
{
byte[] dataBuffer = Encoding.UTF8.GetBytes(data);
byte[] dataBufferHashed = sha256.ComputeHash(dataBuffer);
hashResult = GetHashString(dataBufferHashed);
}
}
return hashResult;
}
/// <summary>
/// Get the Hash Value for MD5 Hash(32 Characters)
/// </summary>
/// <param name="data">The Input Data</param>
/// <returns></returns>
public static string GetHashMD5(string data)
{
string hashResult = string.Empty;
if (data != null)
{
using (MD5 md5 = MD5.Create())
{
byte[] dataBuffer = Encoding.UTF8.GetBytes(data);
byte[] dataBufferHashed = md5.ComputeHash(dataBuffer);
hashResult = GetHashString(dataBufferHashed);
}
}
return hashResult;
}
/// <summary>
/// Get the Encrypted Hash Data
/// </summary>
/// <param name="dataBufferHashed">Buffered Hash Data</param>
/// <returns> Encrypted hash String </returns>
private static string GetHashString(byte[] dataBufferHashed)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in dataBufferHashed)
{
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
}
}
Modify / any better solution for this code is always welcome.