Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }