ГОСТ Р МЭК 61784-3-3—2016
Приложение А
(справочное)
Дополнительная информация для профиля коммуникаций
функциональной безопасности CPF 3
А.1 Вычисление хэш функции
Процедура, представленная на рисунке А.1 обнаруживает 99.999 994 % всех ошибок, являющихся результа
том модификации данных. С ее помощью также можно обнаруживать последовательные ошибки, так как проверка
сигнатуры учитывает последовательность слов.
Для 24-битовой CRC сигнатуры, значение 15D6DCBh используется в качестве генерирующего полинома.
Число битов данных может быть четным или нечетным. Значение, генерируемое после последнего октета, соот
ветствует переданной CRC сигнатуре.
void crc24_calc<unsigned char х, unsigned long ’ г)
inti;
for (i = 1; i <= 8; i++)
if ((bool)(‘r & 0x800000) != (booIXx & 0x80))
/* XOR = 1 => Сдвиг и обработка полинома 7
•г = ( * г « 1) Л0x5D6DCB;
else
Л XOR = 0 => pure shift 7
*r = *r « 1;
x = x « 1;
/* for 7
Рисунок A.1 — Типичная «С» процедура циклической проверки избыточностью
Оптимизированный во время выполнения вариант для вычисления сигнатуры CRC требует немного больше
памяти. Соответствующая функция (А.1) в языке программирования С для вычислений 24-битовой CRC сигнатуры
при помощи справочных таблиц показана ниже:
г = crctab24 [((г » 16)А*g++) & Oxff] А (г « 8).(А.1)
где:
-
г
представляет собой результат 24-битовой CRC сигнатуры;
-
q
представляет собой указатель на фактическое значение октета, для которого необходимо вычислить
CRC. После считывания значения указатель должен быть увеличен для следующего октета посредством q++:
- начальное значение г равное «0*.
Для этого вычисления используется таблица А.1.
Таблица А.1 - Таблица «Crctab24» для вычислений 24-битоеой CRC сигнатуры
Т а б л и ц а А.1 — Таблица «Crctab24» для вычислений 24-битовой CRC сигнатуры
Справочная таблица CRC (0...255)
0x000000
0X5D6DCB
ОхВАОВЭб
0xE7B65D
0X28DAE7
0х75В72С
0x920171
0xCF6CBA
0х51В5СЕ
0X0CD805
0хЕВ6Е58
ОхВбОЗЭЗ
0X796F29
0х2402Е2
0XC3B4BF
0X9ED974
ОхАЗбВЭС
0XFE0657
0Х19В00А
0x44DDC1
0х8ВВ17В
0XD6DCB0
0X316AED
0х6С0726
0XF2DE52
0xAFB399
0Х4805С4
0X15680F
0XDA04B5
0х87697Е
0X60DF23
0x3DB2E8
0X1BBAF3
0X46D738
0ХА16165
OxFCOCAE
0x336014
0X6E0DDF
0х89ВВ82
0XD4D649
0X4A0F3D
0x1762F6
0XF0D4AB
0XADB960
0x620 5DА
0X3FB811
0XD80E4C
0x856387
0xB8D16F
0хЕ5ВСА4
0X020AF9
0X5F6732
Ох900В88
0xCD6643
0X2AD01E
0X77BDD5
0хЕ964А1
0хВ4096А
0X53BF37
0x0ED2FC
0хС1ВЕ46
0X9CD38D
0X7B65D0
0x26081В
0х3775Е6
0X6A182D
0X8DAE70
ОхООСЗВВ
0X1FAF01
0х42С2СА
0хА57497
0xF8195C
0х66С028
0X3BADE3
OxDCIBBE
0x817675
0х4Е1 ACF
0x137704
0XF4C159
0хА9АС92
103