using System.Threading.Tasks;
using System.Diagnostics;
using System.Security.Cryptography;
using System.Data.HashFunction.CityHash;
using System.Data.HashFunction.FarmHash;
using System.Data.HashFunction.SpookyHash;
public static string TEST_STRING = LoremIpsum.Generate(255);
public static void Main()
var stopwatch = new Stopwatch();
Console.WriteLine("MD5 Hash");
Console.WriteLine(StringToMd5(TEST_STRING));
result = stopwatch.Elapsed;
Console.WriteLine(result.TotalMilliseconds.ToString("\n0.000\n"));
Console.WriteLine("Md5 Hash to GUID");
Console.WriteLine(StringToGuid(TEST_STRING));
result = stopwatch.Elapsed;
Console.WriteLine(result.TotalMilliseconds.ToString("\n0.000\n"));
Console.WriteLine("Murmer Hash3");
Console.WriteLine(StringToMurmerHash3(TEST_STRING));
result = stopwatch.Elapsed;
Console.WriteLine(result.TotalMilliseconds.ToString("\n0.000\n"));
Console.WriteLine("City Hash");
Console.WriteLine(StringToCityHash(TEST_STRING));
result = stopwatch.Elapsed;
Console.WriteLine(result.TotalMilliseconds.ToString("\n0.000\n"));
Console.WriteLine("Spook Hash V2");
Console.WriteLine(StringToSpookHashV2(TEST_STRING));
result = stopwatch.Elapsed;
Console.WriteLine(result.TotalMilliseconds.ToString("\n0.000\n"));
Console.WriteLine("Farm Hash 128");
Console.WriteLine(StringToFarmHash(TEST_STRING));
result = stopwatch.Elapsed;
Console.WriteLine(result.TotalMilliseconds.ToString("\n0.000\n"));
public static Guid StringToGuid (string text)
using (var algo = MD5.Create())
var data = algo.ComputeHash(Encoding.Default.GetBytes(text));
public static string StringToMd5(string text)
using(var algo = MD5.Create())
.ToString(algo.ComputeHash(Encoding.Default.GetBytes(text)))
public static string StringToCityHash(string text)
var algo = CityHashFactory.Instance.Create();
.ComputeHash(Encoding.Default.GetBytes(text))
public static string StringToSpookHashV2(string text)
var algo = SpookyHashV2Factory.Instance.Create();
.ComputeHash(Encoding.Default.GetBytes(text))
public static string StringToFarmHash(string text)
var algo = FarmHashFingerprint128Factory.Instance.Create();
.ComputeHash(Encoding.Default.GetBytes(text))
public static string StringToMurmerHash3(string text)
var algo = MurmurHash.Create128(managed: false);
.ToString(algo.ComputeHash(Encoding.Default.GetBytes(text)))
public static string Generate(int maxWordCount)
=> _generate(maxWordCount, maxWordCount);
public static string Generate(int minWordCount, int maxWordCount)
=> _generate(minWordCount, maxWordCount);
public static string Generate(int minWordCount, int maxWordCount, int maxSentanceCount)
=> _generate(minWordCount, maxWordCount, maxSentanceCount, maxSentanceCount);
public static string Generate(int minWordCount, int maxWordCount, int minSentanceCount, int maxSentanceCount)
=> _generate(minWordCount, maxWordCount, minSentanceCount, maxSentanceCount);
public static string Generate(int minWordCount, int maxWordCount, int minSentanceCount, int maxSentanceCount, int maxParagraphCount)
=> _generate(minWordCount, maxWordCount, minSentanceCount, maxSentanceCount, maxParagraphCount, maxParagraphCount);
public static string Generate(int minWordCount, int maxWordCount, int minSentanceCount, int maxSentanceCount, int minParagraphCount, int maxParagraphCount)
=> _generate(minWordCount, maxWordCount, minSentanceCount, maxSentanceCount, minParagraphCount, maxParagraphCount);
private static string _generate(int minWordCount, int maxWordCount, int minSentanceCount = 1, int maxSentanceCount = 1, int minParagraphCount = 1, int maxParagraphCount = 1)
var source = "lorem,ipsum,dolor,sit,amet,consectetur,adipiscing,elit,sed,do,eiusmod,tempor,incididunt,ut,labore,et,dolore,magna,aliqua,enim,ad,minim,veniam,quis,nostrud,exercitation,ullamco,laboris,nisi,aliquip,ex,ea,commodo,consequat,duis,aute,irure,in,reprehenderit,voluptate,velit,esse,cillum,eu,fugiat,nulla,pariatur,excepteur,sint,occaecat,cupidatat,non,proident,sunt,culpa,qui,officia,deserunt,mollit,anim,id,est,laborum,perspiciatis,unde,omnis,iste,natus,error,voluptatem,accusantium,doloremque,laudantium,totam,rem,aperiam,eaque,ipsa,quae,ab,illo,inventore,veritatis,quasi,architecto,beatae,vitae,dicta,explicabo,nemo,ipsam,quia,voluptas,aspernatur,aut,odit,fugit,consequuntur,magni,dolores,eos,ratione,sequi,nesciunt,neque,porro,quisquam,dolorem,adipisci,numquam,eius,modi,tempora,incidunt,magnam,aliquam,quaerat,minima,nostrum,exercitationem,ullam,corporis,suscipit,laboriosam,aliquid,commodi,consequatur,autem,vel,eum,iure,quam,nihil,molestiae,illum,quo,at,vero,accusamus,iusto,odio,dignissimos,ducimus,blanditiis,praesentium,voluptatum,deleniti,atque,corrupti,quos,quas,molestias,excepturi,occaecati,cupiditate,provident,similique,mollitia,animi,dolorum,fuga,harum,quidem,rerum,facilis,expedita,distinctio,nam,libero,tempore,cum,soluta,nobis,eligendi,optio,cumque,impedit,minus,quod,maxime,placeat,facere,possimus,assumenda,repellendus,temporibus,quibusdam,officiis,debitis,necessitatibus,saepe,eveniet,voluptates,repudiandae,recusandae,itaque,earum,hic,tenetur,a,sapiente,delectus,reiciendis,voluptatibus,maiores,alias,perferendis,doloribus,asperiores,repellat";
var words = source.Split(",");
var temp = new StringBuilder();
var randomNum = new Random();
var wordCount = randomNum.Next(minWordCount, maxWordCount + 1);
var sentanceCount = randomNum.Next(minSentanceCount, maxSentanceCount + 1);
var paragraphCount = randomNum.Next(minParagraphCount, maxParagraphCount + 1);
for (var x = 0; x <= paragraphCount; x++)
for (var j = 0; j < sentanceCount; j++)
for (var i = 0; i < wordCount; i++)
wordIndex = randomNum.Next(words.Length);
? char.ToUpper(words[wordIndex][0]) + words[wordIndex].Substring(1)
temp.Append(i != wordCount - 1 ? " " : ".");