private void Init() { l0 = Utills.StickedBinaryMsg(message.Substring(0, message.Length / 2)); //Блок L0 (32 бит) r0 = Utills.StickedBinaryMsg(message.Substring(message.Length / 2, message.Length / 2)); //Блок R0 (32 бит) x0 = Utills.StickedBinaryMsg(key); //Блок ключа X0 (32 бит) sumR0AndX0 = Utills.Modulo2Pow32(r0, x0); //Сложение блоков R0 и X0 по модулю 2^32 filled = Function(sumR0AndX0); //Преобразование в блоке подстановки f = Utills.Shift(filled, -11); //f(R0, X0), сдвиг на 11 бит влево r1 = Utills.Modulo2(l0, f); //Результат R1: сложение по модулю 2 блоков L0 и f(R0, X0) }
private void Init() { msgBinary = Utills.StickedBinaryMsg(message); sbstMsg = PermuteElements(msgBinary, permuteTable1); l = sbstMsg.Substring(0, sbstMsg.Length / 2); r = sbstMsg.Substring(sbstMsg.Length / 2, sbstMsg.Length / 2); extendedBlockR = ExtendBlockSize(r); keyBinary = dropBits(Utills.StickedBinaryMsg(key)); sumKeyAndExtR = Utills.Modulo2(extendedBlockR, keyBinary, 48); anotherSubstitute = SBlockSubstitution(sumKeyAndExtR, sBlockTable); concatRAndL = string.Concat(anotherSubstitute + l); substSum = PermuteElements(concatRAndL, permuteTable2); }
private void Init() { msg2 = Utills.StickedBinaryMsg(msg); //Входное сообщение в двоичном виде. perMsg = PermuteElements(msg2, Table1); //Начальная перестановка l = perMsg.Substring(0, perMsg.Length / 2); //Блок L r = perMsg.Substring(perMsg.Length / 2, perMsg.Length / 2); //Блок R exr = r4to6(r); //Расширение подблоков R k2 = keyTo48(Utills.StickedBinaryMsg(k)); //Уменьшение 64-битного исходного ключа до 48-бит summKAndR = Utills.Modulo2(exr, k2, 48); //Сумма расширенного блока R0 с блоком ключа по модулю 2 s = SBlockSubstitution(summKAndR, sElements); //S-преобразование pAndL = string.Concat(l + PermuteElements(s, pElements)); //P-преобразование и L res = PermuteElements(pAndL, Table2); //Конечная перестановка }
private void Init() { msgBinary = Utills.StickedBinaryMsg(message); //Входное сообщение в двоичном виде. sbstMsg = PermuteElements(msgBinary, Table1); //Начальная перестановка l = sbstMsg.Substring(0, sbstMsg.Length / 2); //Блок L r = sbstMsg.Substring(sbstMsg.Length / 2, sbstMsg.Length / 2); //Блок R extendedBlockR = ExtendBlockSize(r); //Расширение подблоков R keyBinary = dropBits(Utills.StickedBinaryMsg(key)); //Уменьшение 64-битного исходного ключа до 48-бит sumKeyAndR = Utills.Modulo2(extendedBlockR, keyBinary, 48); //Сумма расширенного блока R0 с блоком ключа по модулю 2 sBlock = SBlockSubstitution(sumKeyAndR, sBlockTable); //S-преобразование pBlockAndL = string.Concat(l + PermuteElements(sBlock, permutePBlock)); //P-преобразование и L result = PermuteElements(pBlockAndL, Table2); //Конечная перестановка }
private void Init() { var r0_str = message.Substring(message.Length / 2, message.Length / 2); r0 = Utills.StickedBinaryMsg(r0_str); var x0_str = key; x0 = Utills.StickedBinaryMsg(x0_str); fR0X0 = Utills.Modulo2Pow32(r0, x0); filled = SubstituteElements(fR0X0); shifted = Utills.Shift(filled, -11); var l0_str = message.Substring(0, message.Length / 2); l0 = Utills.StickedBinaryMsg(l0_str); r1 = Utills.Modulo2(l0, shifted); }