Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CRC-8 массива байт, вычислить 
V
    Опции темы
wofs
Дата 11.6.2011, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 1.5.2007

Репутация: нет
Всего: нет



Доброго дня.
Есть массив байт пусть будет vbyte размер достаточно большой (~4Мб).
Требуется вычислить CRC-8 checksum-8 этого массива.
Нашел в википедии описание алгоритма и пример на Си, но в Си я нуб, а описание никак в мозгу не обыграю чтоб в функцию вылить...
Помогите функцией плиз.

Это сообщение отредактировал(а) wofs - 13.6.2011, 16:40
PM MAIL   Вверх
northener
Дата 12.6.2011, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(wofs @  11.6.2011,  23:08 Найти цитируемый пост)
Требуется вычислить CRC-8

Зачем требуется?
Строгого стандарта CRC не существует. Есть только некий общий принцип.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
wofs
Дата 12.6.2011, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 1.5.2007

Репутация: нет
Всего: нет



Цитата(northener @ 12.6.2011,  01:12)
Зачем требуется?
Строгого стандарта CRC не существует. Есть только некий общий принцип.

Требуется для того, что бы вернуть изначальную CRC измененному файлу.
Ядро в файле перед запуском считывает CRC по алгоритму CheckSum8 и если она не равна той, что заложена в нем, то запуска не происходит.
Алгоритм полностью совпадает с тем, который использует для подсчета CheckSum8 редактор http://mh-nexus.de/en/hxd/
PM MAIL   Вверх
AKATAN
  Дата 12.6.2011, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 30.9.2008
Где: Украина

Репутация: 1
Всего: 1



Код

Program chksum8;
{$APPTYPE CONSOLE}

function CheckSum8(s: string): byte;
var i, b, k: byte;
begin
  b:=0;
  for i:=1 to Length(S) do b:=b + ord(s[i]);
  for i:=0 to 255 do
  begin
    k:=b + i;
    if k = $40 then break;
  end;
  result:=i;
end;

begin
  writeln(chr(CheckSum8('Z5IGBFAZ900105Y'))); // v
end.

3-я ссылка найденная гуглом...

PM MAIL ICQ   Вверх
northener
Дата 13.6.2011, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(wofs @  12.6.2011,  12:40 Найти цитируемый пост)
Ядро в файле перед запуском считывает CRC по алгоритму CheckSum8 и если она не равна той, что заложена в нем, то запуска не происходит.
Алгоритм полностью совпадает с тем, который использует для подсчета CheckSum8 редактор http://mh-nexus.de/en/hxd/ 

Ну, как бы, CRC8 это не CheckSum8. А CheckSum8, в свою очередь, вовсе не относится к алгоритмам CRC (Circular Redundancy Check).
Кстати алгоритмов CheckSum тоже не мало. Удачи в поисках!



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
wofs
Дата 13.6.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 1.5.2007

Репутация: нет
Всего: нет



всем спасибо, я действительно думал про одно, спросил про другое!

AKATAN
Цитата

3-я ссылка найденная гуглом...

уху этот код я видел, у него на входе строка, а у меня массив байт. в случае переделки все равно дает не верный результат.
видимо как тут сказали считает по другому. будем искать.. спасибо.

Нашел описание алгоритма.
Код

Checksum-X(file) = Sum_of_all_bytes(file) mod 2^X

написал функцию по описанию - работает. всем спасибо за обсуждение!

Это сообщение отредактировал(а) wofs - 13.6.2011, 16:39
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.