// The decoding Algorithm public string DecodeMessage(string EncodedIMMessage, string MacString) { string DecodedMessage = ""; char[] arraySplit = { ' ' }; string[] IMMessageWords = EncodedIMMessage.Split(arraySplit); int i = 0; foreach (string encodedword in IMMessageWords) { if (encodedword.Length == 0) { continue; } if (String.Equals(encodedword, "")) { continue; } string MacSplit; MacSplit = MacString.Substring(i * (int)AlgoParameters.MACSIZE, (int)AlgoParameters.MACSIZE); if (ChaffMACCodeGenerator.VerifyMAC(encodedword, MacSplit, sessionkey) == true) { DecodedMessage = DecodedMessage + " " + encodedword; } i++; } return(DecodedMessage); }
String GenerateMACString(string[] queryResult, String word) { Boolean encodedword = false; String MacString = ""; foreach (string mesgword in queryResult) { if (mesgword.Length == 0) { continue; } if (String.Equals(mesgword, "")) { continue; } if (String.Equals(word, mesgword) && encodedword == false) { //Console.WriteLine("\n Word:" + mesgword + " MacString: " + ChaffMACCodeGenerator.ComputeMAC(mesgword, sessionkey)); MacString = MacString + ChaffMACCodeGenerator.ComputeMAC(mesgword, sessionkey); encodedword = true; } else { string randomMac; randomMac = ChaffMACCodeGenerator.RandomMAC(randomMacGenerator); //Console.WriteLine("\n Word:" + mesgword + " MacString: " + randomMac); MacString = MacString + randomMac; } } return(MacString); }