private string ExtendBlockSize(string bitStr) { string[] formattedBitStr = Utills.BinaryFormat(bitStr, 4).Split(' '); StringBuilder extendedBitStr; StringBuilder result = new StringBuilder(48); for (int i = 0; i < formattedBitStr.Length; i++) { extendedBitStr = new StringBuilder(6); extendedBitStr.Append(formattedBitStr[(i - 1 + 8) % 8].ElementAt(3)); extendedBitStr.Append(formattedBitStr[i]); extendedBitStr.Append(formattedBitStr[(i + 1 + 8) % 8].ElementAt(0)); result.Append(extendedBitStr); } return(result.ToString()); }
public Des(string message, string key) { Message = message; Key = key; LPart = message.Substring(0, message.Length / 2); RPart = message.Substring(message.Length / 2, message.Length / 2); BinaryMessage = Utills.StickedBinaryMsg(Message); InitialPermutedMessage = PermuteElements(BinaryMessage, InitialPermutation); LPart = InitialPermutedMessage.Substring(0, InitialPermutedMessage.Length / 2); RPart = InitialPermutedMessage.Substring(InitialPermutedMessage.Length / 2, InitialPermutedMessage.Length / 2); ExtendeRBlock = ExtendBlockSize(RPart); BinaryKey = GenerateKey(Utills.StickedBinaryMsg(Key)); KeyWithExtendedR = Utills.Modulo2(ExtendeRBlock, BinaryKey, 48); SBlockSubstituted = SBlockSubstitution(KeyWithExtendedR, SubstitutionBoxes); SBlockSubstituted = PermuteElements(SBlockSubstituted, ExpansionFunction); ConcatedRL = string.Concat(LPart + SBlockSubstituted); FinalPermutedMessage = PermuteElements(ConcatedRL, FinalPermutation); }