Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Программирование »   Assembler »   Вычисление CRC32
RSS

Вычисление CRC32

На Delphi + Assembler

Текущий рейтинг темы: Нет

  Вперед>>Страницы: 1 * 2
Модератор: Winnowing_Raven
Печать
 
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Jaxx, Си и Асм - не совместимы. Переписывать смысла вобще нет.
Требуется ли маштабируемость? Под какую ОС надо написать?
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 173
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Если нет смысла переписывать - то что мне вообще тогда делать?

---
Каждый человек по-своему прав... А по-моему, нет.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
А действительно, под что пишем? Под DOS? Тогда все достаточно просто, кроме расчета CRC (так как я не знаю, как конкретно он считается). Еще вопрос: требуется ли обходить подкаталоги, или ставим на учет только файлы в текущем каталоге?
А вообще, написать не сложно, но очень долго и гемморойно (у нас такое на курсовой тянуло).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 173
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Больше никаких условий нет. Я привел полное условие задачи.

---
Каждый человек по-своему прав... А по-моему, нет.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 173
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Так. Концепция изменилась. Программа должна быть на Delphi с использованием ассемблерных вставок. Теперь ясно, под что писать надо. Это уже прогресс.

---
Каждый человек по-своему прав... А по-моему, нет.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Jaxx, а на хера там АСМ вставки ???
Я могу это прогу хоть с ЦРЦ, хоть с Хешем написать на чистом Дельфи.. ну ессно дело либу буду юзать, но Асма у меня в коде - не будет.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
А вобще под Линукс/ФриБСД такое элементарно пишется.
Я уже писал маленькую програмульку.
Типа есть база, где зраниться мд5 хеш файла.
Ну и она по крону выбирает данные из базы, сравнивает с текщим хешем и если чё-то не так, то у моего сотового телефона заканчиваеццо место для СМС сообщений.


Однажды ради прикола додумался её натравить на ЛОГ фаил... гыгы %))
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Вообще, под Windows - тоже, если в WinAPI есть функция для подсчета CRC (а по-моему, она там есть).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Offtop: А не ужели CRC - лучше чем md5 хеш ?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Ничуть не лушче. MD5 - 128-битный хеш, а CRC - только 32-битный. Он просто более распространен, так как появился намного раньше MD5, и гораздо проще реализуется аппаратно (например, с его помощью проверяется контрольная сумма сектора дискет и самых ранних жестких дисков).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
XXXX Pro, тогда смысл использовать CRC ??
ИМХО надо MD5 юзать.
Да и проще.
#include <openssl/md5.h>
....................
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 173
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
В условии задачи сказано, что нужно использовать именно CRC. Постараюсь выбить более точное условие. А то так не совсем понятно (впрочем, как обычно), чего нужно. Ненавижу неточные условия.

---
Каждый человек по-своему прав... А по-моему, нет.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
wsx CRC сейчас используется только там, где нужна аппаратная реализация или там, где он жестко задан стандартом (например, в тех же заголовках IP-пакетов).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 173
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Создать приложение-ревизор, осуществляющее постановку на учет и последующую проверку файлов на предмет модификации (контроль целостности) с помощью подсчета контрольной суммы файла (CRC) и последующего сравнения с хранящимся эталоном.
Замечание. Необходимо реализовать механизм, регистрирующий модификацию одного бита.
Пользователю должны быть предоставлены следующие возможности:
1) постановка файла на учет;
2) снятие с учета;
3) контроль целостности файла.
Необходимо разработать Справку.
Необходимо также разработать и реализовать механизм (структуру) для хранения эталонных CRC.
Интерфейс пользователя необходимо создать в среде Delphi, механизм проверки целостности файла реализовать на языке Assembler (ассемблерные вставки).


---
Каждый человек по-своему прав... А по-моему, нет.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Всё, кроме CRC на АСме делается элементарно...
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 173
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Вот именно с CRC у меня и проблемы. Насчет элементарности остального я и сам в курсе.

---
Каждый человек по-своему прав... А по-моему, нет.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
http://pascal.sources.ru/crc/crc-32.htm

Думаю вот отсюдова можно нужное выдрать..
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 173
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Нашел такой вот кусок кода:

function CRC32(const IniCRC:Integer;Source:AnsiString):Integer; asm
Push EBX
Push ESI
Push EDI
Or EDX,EDX
Jz @Done
Mov ESI,EDX
Mov ECX,[EDX-4]
Jecxz @Done
Lea EDI,@CRCTbl
Mov EDX,EAX
Xor EAX,EAX
Cld
@L1:
Lodsb
Mov EBX,EDX
Xor EBX,EAX
And EBX,$FF
Shl EBX,2
Shr EDX,8
And EDX,$FFFFFF
Xor EDX,[EDI+EBX]
Dec ECX
Jnz @L1
Mov EAX,EDX
@Done:
Pop EDI
Pop ESI
Pop EBX
Ret
@CRCTbl:
DD $00000000, $77073096, $ee0e612c, $990951ba
DD $076dc419, $706af48f, $e963a535, $9e6495a3
DD $0edb8832, $79dcb8a4, $e0d5e91e, $97d2d988
DD $09b64c2b, $7eb17cbd, $e7b82d07, $90bf1d91
DD $1db71064, $6ab020f2, $f3b97148, $84be41de
DD $1adad47d, $6ddde4eb, $f4d4b551, $83d385c7
DD $136c9856, $646ba8c0, $fd62f97a, $8a65c9ec
DD $14015c4f, $63066cd9, $fa0f3d63, $8d080df5
DD $3b6e20c8, $4c69105e, $d56041e4, $a2677172
DD $3c03e4d1, $4b04d447, $d20d85fd, $a50ab56b
DD $35b5a8fa, $42b2986c, $dbbbc9d6, $acbcf940
DD $32d86ce3, $45df5c75, $dcd60dcf, $abd13d59
DD $26d930ac, $51de003a, $c8d75180, $bfd06116
DD $21b4f4b5, $56b3c423, $cfba9599, $b8bda50f
DD $2802b89e, $5f058808, $c60cd9b2, $b10be924
DD $2f6f7c87, $58684c11, $c1611dab, $b6662d3d
DD $76dc4190, $01db7106, $98d220bc, $efd5102a
DD $71b18589, $06b6b51f, $9fbfe4a5, $e8b8d433
DD $7807c9a2, $0f00f934, $9609a88e, $e10e9818
DD $7f6a0dbb, $086d3d2d, $91646c97, $e6635c01
DD $6b6b51f4, $1c6c6162, $856530d8, $f262004e
DD $6c0695ed, $1b01a57b, $8208f4c1, $f50fc457
DD $65b0d9c6, $12b7e950, $8bbeb8ea, $fcb9887c
DD $62dd1ddf, $15da2d49, $8cd37cf3, $fbd44c65
DD $4db26158, $3ab551ce, $a3bc0074, $d4bb30e2
DD $4adfa541, $3dd895d7, $a4d1c46d, $d3d6f4fb
DD $4369e96a, $346ed9fc, $ad678846, $da60b8d0
DD $44042d73, $33031de5, $aa0a4c5f, $dd0d7cc9
DD $5005713c, $270241aa, $be0b1010, $c90c2086
DD $5768b525, $206f85b3, $b966d409, $ce61e49f
DD $5edef90e, $29d9c998, $b0d09822, $c7d7a8b4
DD $59b33d17, $2eb40d81, $b7bd5c3b, $c0ba6cad
DD $edb88320, $9abfb3b6, $03b6e20c, $74b1d29a
DD $ead54739, $9dd277af, $04db2615, $73dc1683
DD $e3630b12, $94643b84, $0d6d6a3e, $7a6a5aa8
DD $e40ecf0b, $9309ff9d, $0a00ae27, $7d079eb1
DD $f00f9344, $8708a3d2, $1e01f268, $6906c2fe
DD $f762575d, $806567cb, $196c3671, $6e6b06e7
DD $fed41b76, $89d32be0, $10da7a5a, $67dd4acc
DD $f9b9df6f, $8ebeeff9, $17b7be43, $60b08ed5
DD $d6d6a3e8, $a1d1937e, $38d8c2c4, $4fdff252
DD $d1bb67f1, $a6bc5767, $3fb506dd, $48b2364b
DD $d80d2bda, $af0a1b4c, $36034af6, $41047a60
DD $df60efc3, $a867df55, $316e8eef, $4669be79
DD $cb61b38c, $bc66831a, $256fd2a0, $5268e236
DD $cc0c7795, $bb0b4703, $220216b9, $5505262f
DD $c5ba3bbe, $b2bd0b28, $2bb45a92, $5cb36a04
DD $c2d7ffa7, $b5d0cf31, $2cd99e8b, $5bdeae1d
DD $9b64c2b0, $ec63f226, $756aa39c, $026d930a
DD $9c0906a9, $eb0e363f, $72076785, $05005713
DD $95bf4a82, $e2b87a14, $7bb12bae, $0cb61b38
DD $92d28e9b, $e5d5be0d, $7cdcefb7, $0bdbdf21
DD $86d3d2d4, $f1d4e242, $68ddb3f8, $1fda836e
DD $81be16cd, $f6b9265b, $6fb077e1, $18b74777
DD $88085ae6, $ff0f6a70, $66063bca, $11010b5c
DD $8f659eff, $f862ae69, $616bffd3, $166ccf45
DD $a00ae278, $d70dd2ee, $4e048354, $3903b3c2
DD $a7672661, $d06016f7, $4969474d, $3e6e77db
DD $aed16a4a, $d9d65adc, $40df0b66, $37d83bf0
DD $a9bcae53, $debb9ec5, $47b2cf7f, $30b5ffe9
DD $bdbdf21c, $cabac28a, $53b39330, $24b4a3a6
DD $bad03605, $cdd70693, $54de5729, $23d967bf
DD $b3667a2e, $c4614ab8, $5d681b02, $2a6f2b94
DD $b40bbe37, $c30c8ea1, $5a05df1b, $2d02ef8d
end;

---
Каждый человек по-своему прав... А по-моему, нет.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Вот файл, который считает CRC для всех файлов в каталоге (и выводит ее в hex).

Прикрепленный файл (Unit1.pas, 5261 байт, скачан: 532 раза)
---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
rpy3uH
Новичок


Откуда: Кузнецк
Всего сообщений: 2
Рейтинг пользователя: 0





Дата регистрации на форуме:
9 сен. 2007
вот код на асме дял получения CRC32
GET_CRC32:



; IN

;       ESI = block offset

;       EDI = block size

; OUT

;       EAX = CRC32



  push esi

  push edi

  push ecx

  push ebx

  push edx



  cld

  xor  ecx,ecx

  dec  ecx

  mov  edx,ecx

   .NextByteCRC:

  xor  eax,eax

  xor  ebx,ebx

  lodsb

  xor  al,cl

  mov  cl,ch

  mov  ch,dl

  mov  dl,dh

  mov  dh,8

   .NextBitCRC:

  shr  bx,1

  rcr  ax,1

  jnc  .NoCRC

  xor  ax,08320h

  xor  bx,0EDB8h

   .NoCRC:

  dec  dh

  jnz  .NextBitCRC

  xor  ecx,eax

  xor  edx,ebx

  dec  edi

  jnz  .NextByteCRC

  not  edx

  not  ecx

  mov  eax,edx

  rol  eax,16

  mov  ax,cx



  pop edx

  pop ebx

  pop ecx

  pop edi

  pop esi

  ret
  Вперед>>Страницы: 1 * 2
Модератор: Winnowing_Raven
Печать
Объединенный Открытый Проект »   Программирование »   Assembler »   Вычисление CRC32
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0495. Количество выполненных запросов: 18, время выполнения запросов 0.0289