public ArrayOfKeys(string key, byte[] input) { //---------Key-------------- var md5 = new MD5.MD5(); var Key = new List <byte>(KeyLength); var hash = md5.GetHash(key); //отримуємо хеш з введеного користувачем ключа Key.AddRange(hash); //додаємо утворений хеш в ліст Key.AddRange(md5.GetHash(BitConverter.ToString(hash))); //і додаємо ще хеш від хешу тому що в нас довжина ключа 32 байта _Key = Key.ToArray(); //перетворюємо ліст в масив //----------Blocks-------------- int blocksCount = input.Length / Helper.BlockLength; //дізнаємось кількість блоків if (input.Length % Helper.BlockLength != 0) //додаємо ще один блок, для тих байтів що лишилиь { blocksCount += 1; } uint additiveBytes = (uint)(Helper.BlockLength - (input.Length % Helper.BlockLength));//скількома байтами потрібно дозаповнити останній блок _Blocks = new byte[blocksCount][]; for (int i = 0; i < _Blocks.Length - 1; ++i)//записуємо кожен блок в окремий елемент двохвимірного масиву "_Blocks" { _Blocks[i] = new byte[Helper.BlockLength]; Array.Copy(input, i * Helper.BlockLength, _Blocks[i], 0, Helper.BlockLength); } var lastBlock = new byte[Helper.BlockLength]; if (additiveBytes == Helper.BlockLength)//якщо останній блок дорівнює довжині слова { Array.Copy(input, (_Blocks.Length - 1) * Helper.BlockLength, lastBlock, 0, Helper.BlockLength); } else if (additiveBytes != Helper.BlockLength)//якщо останній блок недорівнює довжині слова { Array.Copy(input, (_Blocks.Length - 1) * Helper.BlockLength, lastBlock, 0, Helper.BlockLength - additiveBytes); byte additive = BitConverter.GetBytes(additiveBytes).First(); for (int i = Helper.BlockLength - (int)additiveBytes; i < Helper.BlockLength; ++i) { lastBlock[i] = additive; } } _Blocks[_Blocks.Length - 1] = lastBlock;//додаємо останній блок }
public static void Main() { MD5.MD5 md = new MD5.MD5(); //rfc 1321 - MD5 for (;;) { md.Value = Console.ReadLine(); Console.WriteLine("MD5 Value =" + md.Value); Console.WriteLine(""); } }
public static void Main() { Console.WriteLine("Ввод строки :\n"); MD5.MD5 md = new MD5.MD5(); /* for(;;) * { */ md.Value = Console.ReadLine(); Console.WriteLine("результат:\n" + md.Value); Console.WriteLine(); //} }
static void Main(string[] args) { ElGamalBean el = new ElGamalBean(new BigInteger(9473.ToString()), new BigInteger(3878.ToString()), new BigInteger(64.ToString())); /*Encryptor encryptor = new Encryptor(el, new BigInteger(9.ToString())); * Console.WriteLine(encryptor.GetA()); * Console.WriteLine( encryptor.GetB()); * encryptor.Decrypt(encryptor.GetA(), encryptor.GetB());*/ MessageEncryptor me = new MessageEncryptor(); string message = "hello"; List <string> encryptedSequence = me.EncryptMessage(message, el); string decryptedHash = me.MessageDecryptor(encryptedSequence, el); Console.WriteLine(decryptedHash); MD5.MD5 hash = new MD5.MD5(); hash.Value = message; Console.WriteLine(hash.Value); if (decryptedHash == hash.Value) { Console.WriteLine("all right"); } else { Console.WriteLine("error"); } Encryptor e = new Encryptor(el); BigInteger a = e.GetA(); BigInteger b = e.GetNDSAB(new BigInteger("104")); Encryptor encryptor = new Encryptor(el); BigInteger firstCheck = el.g.ModPow(new BigInteger("104"), el.p); BigInteger secondChech = encryptor.GetSecondCheck(); }
public static void Main() { char i; bool wantexit = false; try { Console.WriteLine("Please select a mode for Demostration"); while (!wantexit) { Console.WriteLine("1)Console"); Console.WriteLine("2)Windows"); Console.WriteLine("3)exit"); Console.Write("So what do u want 1/2/3>"); i = (char)Console.Read(); if (i == '1') { MD5.MD5 md; string tstr; md = new MD5.MD5(); Console.WriteLine("Enter ur string to see what it hashes to"); Console.WriteLine("To quit the program Enter 3 as new value "); Console.WriteLine(""); Console.WriteLine(""); Console.Write("New Value>"); tstr = Console.ReadLine(); while (tstr.ToUpper() != "THANK YOU") { md.Value = tstr; Console.WriteLine("MD5 Value =" + md.FingerPrint); Console.Write("New Value>"); tstr = Console.ReadLine(); } wantexit = true; } else if (i == '2') { FrmDriver fd = new FrmDriver(); //fd.Show(); fd.ShowDialog(); wantexit = true; } else if (i == '3') { wantexit = true; } else { wantexit = false; } } } catch (Exception ex) { Console.WriteLine("error {0}", ex.Message); } finally { Console.WriteLine("press enter to continue"); Console.Read(); } }
public static void Main() { char i; bool wantexit = false; try { Console.WriteLine("Asalamo Alikum \n This Program is a driver program for MD5 algo that i have implented"); Console.WriteLine("Please select a mode for Demostration"); while (!wantexit) { Console.WriteLine("1)Console"); Console.WriteLine("2)Windows"); Console.WriteLine("3)exit"); Console.Write("So what do u want 1/2/3>"); i = (char)Console.Read(); if (i == '1') { MD5.MD5 md; string tstr; md = new MD5.MD5(); Console.WriteLine("Enter ur string to see what it hashes to"); Console.WriteLine("To quit the program Enter \"thank you faraz\" as new value "); Console.WriteLine("Dont forget to mail me about ur Comments on the MD5 class"); Console.WriteLine("here i am [email protected]"); Console.WriteLine(""); Console.WriteLine(""); Console.Write("New Value>"); tstr = Console.ReadLine(); while (tstr.ToUpper() != "THANK YOU FARAZ") { md.Value = tstr; Console.WriteLine("MD5 Value =" + md.FingerPrint); Console.Write("New Value>"); tstr = Console.ReadLine(); } wantexit = true; } else if (i == '2') { FrmDriver fd = new FrmDriver(); //fd.Show(); fd.ShowDialog(); wantexit = true; } else if (i == '3') { wantexit = true; } else { wantexit = false; } } } catch (Exception ex) { Console.WriteLine("error {0}", ex.Message); } finally { Console.WriteLine("press enter to continue"); Console.Read(); } }