На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Помогите с шифром ГОСТ 28147-89
    Пытаюсь сделать реализацию этого шифра но не получается при повторном прогоне через алгоритм получается ботва какая то
    если кто знаком с этим алгоритмом помогите пожалуйста

          key_step:=0;

         for StSh:=1 to 32 do
          begin

    //  buf и slch --- блоки открытого текста
    //ОСНОВНАЯ ЧАСТЬ
    //
    //
    // kzu[i] - массив из 8 32-разр чисел
           rBlock:=slch;
    lBlock:=(buf+kzu[key_step] {сложение с ключем} ) mod two32;

    G_HEX:=IntToHex(lBlock,8); //16-е з-е  блока
    Leng_Hex:=Length(G_HEX);

    for i:=0 to Leng_Hex-1 do
    begin
      TempGost[i]:=copy(G_HEX,i+1,1);
    end;
    //подстановка  по таблице замены -- таб. 8х4 заполнена 16-и знач-и
    for i:=0 to Leng_Hex-1 do
    begin
      for j:=0 to 15 do
       begin
        tempHex:=IntToHex(j,1);
        if TempGost[i]=tempHex then
          begin
           ExitStr:=ExitStr+IntToHex(TabZam[i,j],1);
           break;
          end;
       end;
    end;
    temps:=HexToInt(ExitStr)  ;
    ExitStr:='';
    // в ассме идет сдвиг и XOR
    asm
    xor EAX,EAX;
    xor EBX,EBX;
    mov EBX,rBlock;
    mov EAX,temps;

    rol EAX,11;
    xor EAX,EBX;
    mov lBlock,EAX;
    end;

    //
    //ОСНОВНАЯ ЧАСТЬ
    //
    //
            buf:=slch;     // Блоки меняются местами
            slch:=lBlock;
           if StSh<=23 then
            begin
             key_step:=key_step+1;
             if key_step=8 then key_step:=0;
            end else
             begin
              if StSh=24
              then key_step:=8;
              key_step:=key_step-1;
             end;
          end;


    если какаято ошибка то сообчите пожалуйста, а если ошибка в ДНК то тоже сообщите :)
    заранее благодарен
    Сообщение отредактировано: purpe -
      А вот эта ссылка не поможет?
      http://kiev-security.bigmir.net/b/102.htm
        сам алгоритм я там и брал,
        а вот релиз на Delphi пока не могу осуществить
        делал полный пошаговый прогон
        но это ничего недало (ошибку так и не нашел).
        Исходники из ссылки написаны на Асме
        разбираться в них себе дороже.
        У меня диплом просто 25 июня а ежели вставлю
        асмовский код , то на вопрос комиссии "а как это?"
        ответить будет трудновато хотя ассемблер вроде понимаю.

        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0156 ]   [ 14 queries used ]   [ Generated: 19.05.24, 06:36 GMT ]