Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 02.03.2012
Сообщений: 66
1

Расчет кода авторизации и CRC

29.03.2018, 14:46. Показов 965. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые форумчане. Прошу помощи. Для расчета кода авторизации используется следующий алгоритм описанный в документации :

C++
1
2
3
4
5
6
7
8
9
C= ADR+1;
for ( I= 1; I<=8; I++ )
{
  C= C*S[I];
  low(C)= low(C) & 0x7F;
  if( low(C)<0x20 ) C+= 0x20;
  R[I]= low(C);
  C= (C>>8) + ADR;
}
Но мне нужно тоже самое но на Delphi. Делаю вот так :
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
c: Byte;
i: Integer;
s: array [1..8] of Byte;
R: array [1..8] of Byte;
ADR: Integer;
  j: Integer;
begin
 ADR:= 1;
 C:= ADR+1;
 
 s[1]:=$3E; s[2]:=$3E; s[3]:=$40; s[4]:=$22; s[5]:=$21; s[6]:=$21;
 s[7]:=$21; s[8]:=$21; // исходные данные
 
for i := 1 to 8 do
  begin
   c:= c*[i];
    C:= low(C) and $7F;
    if low(C)<$20 then C:=C+ $20;
    R[I]:= Low(C);
    C:= (C shr  8) + ADR;
   end;
но в результате получаю 00 00 00 00 00 00 00 00 (правильный результат 3C 6E 20 36 66 45 45 45).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2018, 14:46
Ответы с готовыми решениями:

Расчет Контрольной суммы CRC части файла
имеем файл OSC_13.nbf первые 42 байта - это заголовок, где описано, для какого устройства, какая...

Расчет CRC с полиномом MODBUS
Доброго времени суток! Есть описание протокола счетчика серии СЭТ-4ТМ. Там есть пример на Паскале...

Быстрота вычисления CRC кода
Доброго времени суток! Помогите ,пожалуйста, найти ответы на два вопроса: - Влияет ли размер файла...

Расчет CRC
С Наступающим форумчане!!!) подскажите пожалуйста можно ли как-то расcчитать CRC для многобайтового...

3
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.03.2018, 14:50 2
Цитата Сообщение от zurprog Посмотреть сообщение
c:= c*[i];
Это что? Наверное нужно
Delphi
1
C:=C*S[i];
0
2 / 2 / 0
Регистрация: 02.03.2012
Сообщений: 66
29.03.2018, 16:33  [ТС] 3
Действительно. c:= c*S[i];

Добавлено через 1 час 40 минут
И еще вопрос про расчет контрольной суммы. В описании так (перевод):

Длина CRC 2" байтов. CRC вычисляется как двоичная сумма данных сообщения, начиная с символа STX и заканчивая ETX. Сумма вычисляется по модулю 2^16 (это означает. на 2 байта), в случае передачи используется от каждого байта 7 младших бит, а затем добавляется бит 8 (бит четности). Сначала передается верхний CRC байт и после нижнего CRC байт.

Помогите с расчетом
0
2 / 2 / 0
Регистрация: 02.03.2012
Сообщений: 66
02.04.2018, 10:06  [ТС] 4
С первым вопросом разобрался сам:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
c,m: Word;
i: Integer;
s: array [1..8] of Byte;
R: array [1..8] of Byte;
ADR: Integer;
  j: Integer;
begin
 ADR:= $21;
 C:= ADR+1;
 for i := 1 to 8 do
  begin
   c:= c*s[i];
   M:=  Lo(C) and $7F;
   if lo(M)<$20 then M:=M+ $20;
   R[I]:= lo(M);
   C:= (C shr  8) + ADR;
   end;
Но с расчетом CRC совсем беда...
0
02.04.2018, 10:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2018, 10:06
Помогаю со студенческими работами здесь

Написать расчет CRC
Есть расчет CRC на C++ static const unsigned short crcTab = {...

Расчет CRC-16 c Revert: true
Добрый день. Прошу помочи с такой проблемой: сделал быстрый (т.е. с таблицей) расчет CRC для...

Обмен информации с контроллером (расчет CRC)
Доброго времени суток! Для чтения информации с контроллера нужно послать команду типа : 1....

USB 2.0: обработка Stuffed Bit и расчет CRC
Уважаемые участники конференции! Расчет CRC Подскажите пожалуйста, есть много примеров расчета...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru