Some times you need to generate GUID from a string which is not valid for GUID constructor .
so what we will do is to get a valid input from string that the GUID constructor will accept it.
It is recommended to be sure that the string that you will generate a GUID from it some how unique.
The Idea is simple is to hash the string to 16 byte Array which the GUID constructor will accept it.
Note: feel free to use more reliable hashing techniques.
The code will talk :
using System;
using System.Text;
using System.Security.Cryptography;
namespace StringToGUID
{
class Program
{
static void Main(string[] args)
{
string token = "BSNAItOawkSl07t77RKnMjYwYyG4bCt0g8DVDBv5m0";
Console.WriteLine(StringToGUID(token).ToString());
token = "BSNePf57YwhzeE9QfOyepPfIPao4UD5UohG_fI-#eda7d";
Console.WriteLine(StringToGUID(token).ToString());
Console.ReadLine();
}
static Guid StringToGUID(string value)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(value));
return new Guid(data);
}
}
}
And The Output:
5e5d4d29-e8b2-edb1-d5f8-a3717796cde0
114a9922-7557-7811-112f-267a1a751e9b