Форум программистов, компьютерный форум CyberForum.ru

Реализация CRC32 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрицы, Ассемблерная вставка. Всем элементам второй строки присвоить соответствующие элементы последнего столбца http://www.cyberforum.ru/cpp-beginners/thread219267.html
помогите решить пожалуйста, у меня зачет срочно!! в первом модуле определена квадратная матрица N го порядка. выводится измененная матрица построчно. это на С сделать надо. во втором модуле всем элементам второй строки присвоить соответствующие элементы последнего столбца. это на ассемблере! буду благодарен)
C++ Файл - буфер - файл (istrem/ostream) Всем добрый день. Помогите пожалуйста найти ошибку. Структура для описания объекта - 4 int числа. struct L_Object { int id; int xpos, ypos, zpos; }; Мне нужно реализовать механизм для чтения и записи файла со списком таких объектов. Для этой цели я написать вот такой класс. http://www.cyberforum.ru/cpp-beginners/thread219261.html
C++ работа с файломи
Задан текстовый файл Input.txt, состоящий из слов. Разделителями между словами является некоторое множество знаков препинания. Для каждой строки, начиная со второй, продублировать слова, которые встречаются в первой строке и записать результат в новый файл Output.txt. Упорядочить слова в полученных строках по возрастанию количества латинских строчных букв в словах, результат сортировки...
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках. C++
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках. Ввод исходного массива организовать из файла, при вводе учесть возможность ввода массива меньшей размерности. Результаты работы программы вывести на экран и в файл.
C++ работа с файлами и строками http://www.cyberforum.ru/cpp-beginners/thread219254.html
В файле хранится информация об учениках школы: имя,фамилия, класс(номер и буква),рост .В новый файл переписать информацию о 3 самых высоких учениках в каждой паралели. вывести в отдельный файл чей рост выше среднего по школе.
C++ реалезация очереди Реализовать очередь. Организовать работу пользователя со списком при помощи меню: 0 – выход из программы; 1 – добавить новый элемент в голову очереди; 2 – удалить элемент с хвоста очереди; 3 – вывести список всех элементов. #include <stdlib.h> #include <stdio.h> #include <conio.h> //создаем струкутуру struct point подробнее

Показать сообщение отдельно
Даниил Павлов
1 / 1 / 0
Регистрация: 06.05.2010
Сообщений: 33
24.12.2010, 09:26     Реализация CRC32
Здраствуйте, помогите реализовать контрольцелостности dll библиотеки, с помощью CRC32.
Писал CRC16, а вот CRC32 не выходит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <tchar.h>
#include <windows.h>
 
WORD MakeCRC16(BYTE *buf, WORD Num)
{
    WORD Polynom16=0x8005;
    WORD CRCHL;//хранит текущую CRC
    BYTE CRCBUF;//буфер для очередного байта сообщения
    BYTE i;
    WORD n,c;
    
//первые два байта сообщения
    CRCHL=((WORD)buf[0])<<8 | buf[1];
    //по очереди достаём все байты сообщения
    for(n=2;n<Num;n++)
    {
//кладём в буфер очередной байт сообщения
        CRCBUF=buf[n];
//и побитно вдвигаем его в CRCHL
        for(i=0;i<8;i++)
        {
//бит, выдвинутый слева из CRCHL (bool!!)
            c=CRCHL & 0x8000;
//сдвиг CRCHL и вдвигание старшего бита из CRCBUF
            CRCHL=CRCHL<<1 | CRCBUF>>7;
//сдвиг CRCBUF
            CRCBUF=CRCBUF<<1;
//если из CRCHL вначале был выдвинут ненулевой бит, то xor
            if(c)CRCHL^=Polynom16;
        }
    }
 
//"добавляем в конец сообщения ещё 2 нулевых байта"
    for(i=0;i<16;i++)
    {
//бит, выдвинутый слева из CRCHL (bool!!)
        c=CRCHL & 0x8000;
//сдвиг CRCHL и вдвигание нуля из CRCBUF
        CRCHL=CRCHL<<1;
//если из CRCHL вначале был выдвинут ненулевой бит,то xor
        if(c)CRCHL^=Polynom16;
    }
    return CRCHL;
}
 
bool CheckFile(LPCTSTR filename)
{
    bool b=true;
    HANDLE h=CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,0,
        OPEN_EXISTING,0,0);
    if(h==INVALID_HANDLE_VALUE) 
        return false;
    DWORD dwSize;
    // Размер файла без размера записанного CRC.
    dwSize=GetFileSize(h,0)-2;
    PBYTE pMem=new BYTE[dwSize];
    if(pMem==0)
        return false;
    DWORD dwCount;
    ReadFile(h,pMem,dwSize,&dwCount,0);
    WORD qw=MakeCRC16(pMem,(WORD)dwSize);
    
    // Считываем CRC.
    PBYTE pMemCRC=new BYTE[2];
    ReadFile(h,pMemCRC,2,&dwCount,0);
    WORD crc=*(WORD*)pMemCRC;
 
    CloseHandle(h);
    delete [] pMem;
    delete [] pMemCRC;
    if (crc==qw)
        return true;
    else 
        return false;
}
 
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID Rez)
{
    switch (dwReason) 
    {
        case DLL_PROCESS_ATTACH:
        {
            TCHAR Buf[MAX_PATH]; // MAX_PATH - максимальная длина строки с путём.
            GetModuleFileName(hModule,Buf,MAX_PATH);
            BOOL b=CheckFile((LPCTSTR)Buf);
            if(!b)
                return FALSE;
            break;
        }
        case DLL_THREAD_ATTACH:
            break;
        case DLL_THREAD_DETACH:
            break;
        case DLL_PROCESS_DETACH:
            break;
    }
    return(TRUE); 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru