1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Сети Файтселя

Тема в разделе "Свободное общение", создана пользователем -, 23 июн 2011.

  1. Гость

    Здравствуйте.
    Пишу программу, выполняющую шифрование с помощью сетей Файстеля.

    Код (C++):
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace faistel_net
    {
    class Program
    {
    static void Main(string[] args)
    {
    //Начальные данные - могут иметь любые другие допустимые значения
    UInt32 l = 0xAAF140AE;
    UInt32 r = 0xB678A198;
    Byte key = 0xAB;
    //
    UInt32 swap;//Служебная переменная
    Console.WriteLine("Begin Left = {0}, Right = {1}, Key = {2}",l,r,key);
    for (int i = 0; i < 16; i++)//Чем больше раундов, тем лучше шифрование. Или нет?
    {
    swap = l ^ r ^ ((UInt16)key * 0xABCD1234);
    l = r;
    r = swap;
    Console.WriteLine("Iteration {0}: Left = {1}, Right = {2} ", i, l, r);
    }
    Console.WriteLine("Result Left = {0}, Right = {1}, Key = {2}", l, r, key);
    Console.ReadLine();
    }
    }
    }
    При выполнении программы обнаруживается следующее:
    [​IMG]

    На 3-ем раунде (под номером 2) данные становятся идентичными начальным значениям - и так затем каждые 3 раунда. Хотя по идее так быть не должно - чем больше раундов шифрования, тем лучше.
    Компилятор - Visual Studio 2008, Microsoft.Net Framework 3.5

    Также пытался найти информацию по алгоритму Файстеля с зацеплением - нигде не нашёл детальное описание самого алгоритма, только неясные намёки как он должен работать. Кто может подсказать, где я могу найти такую информацию, пожалуйста подскажите.
     
Загрузка...

Поделиться этой страницей