создание функции

Тема в разделе "Общие вопросы по С и С++", создана пользователем ImperoMS, 24 апр 2009.

  1. ImperoMS

    ImperoMS Гость

    доброе время суток!
    пишу свою функцию:
    по идее она должна преобразованную последовательность Mi(32 байта) преобразовывать в массив DWORD (16 элементов по 4 байта).

    [codebox]void _mf_Transform_V(BYTE *Mi, DWORD *VMi)
    {
    //H=4E4E9C9C 9C9C4E4E 9C9C4E4E 4E4E9C9C 9C9C4E4E 4E4E9C9C 4E4E9C9C 9C9C4E4E
    memset((char*)VMi,0,65);
    DWORD H[8];
    memset((char*)H,0,33);
    H[0]= 0x4E4E9C9C;
    H[1]= 0x9C9C4E4E;
    H[2]= 0x9C9C4E4E;
    H[3]= 0x4E4E9C9C;
    H[4]= 0x9C9C4E4E;
    H[5]= 0x4E4E9C9C;
    H[6]= 0x4E4E9C9C;
    H[7]= 0x9C9C4E4E;

    DWORD v[16];
    memset((char*)v,0,65);
    v[0]= 0xD1845AC6;
    v[1]= 0xAC3D25C6;
    v[2]= 0xF467247D;
    v[3]= 0x079294AB;
    v[4]= 0xF19A24CD;
    v[5]= 0xB47D25C6;
    v[6]= 0xD4522491;
    v[7]= 0x0D817489;
    v[8]= 0x87D45A6F;
    v[9]= 0x3D5721C6;
    v[10]= 0x573714C8;
    v[11]= 0x078274DB;
    v[12]= 0x2A8A1A76;
    v[13]= 0xDC6715C6;
    v[14]= 0xB4F1257D;
    v[15]= 0x0B1294AC;

    DWORD ViSumH[8];
    memset(ViSumH,0,33);
    DWORD K[8];
    memset(K,0,33);
    DWORD KsumVi[8];
    memset(KsumVi,0,33);
    BYTE ki[4];
    for(int j = 0; j<=7;j++)
    {
    memset(ki,0,5);
    for (int l=0;l<=3;l++)
    {
    ki[l] = Mi[l + 4*j];
    }
    K[0] = *(DWORD*)ki;
    KsumVi[j] = (K[0]+v[j])%0xFFFFFFFF;
    }
    for(int i=8;i<=15;i++)
    {
    ViSumH[i-8] = (v+H[i-8])%0xFFFFFFFF;
    }

    for (int i=0;i<8;i++)
    VMi = KsumVi;
    for (int i=8;i<16;i++)
    VMi = ViSumH[i-8];

    // ShowMessage("VMi"); - если не комментить, то работает нормально
    }[/codebox]

    проблема в следующем, когда я в другой функции использую Vmi, то ее длина получается на 8 больше, чем надо, т.е. 72 а не 64.

    [codebox] _mf_Transform_V(Mi,V);
    _mf_Preobraz_p0(V);[/codebox]

    вот объявление переменных:

    [codebox] DWORD V[16];
    memset((char*)V,0,65);
    BYTE Mi[32];
    memset((char*)Mi,0,33);[/codebox]
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Дебаггер в руки и пошаговая отладка
     
  3. ImperoMS

    ImperoMS Гость

    а как организовать сложение по модулю 2 в 32?
    вот так мона?

    (a+:)%0xFFFFFFFF
     
Загрузка...

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