Как проверить контрольную сумму файла и почему это нужно делать

Способы открытия

Рассмотрим программы, которые открывают такой формат.

Способ 1: MD5Summer

Начинает обзор MD5Summer, целью которой является создание и проверка хеша MD5 файлов.

  1. Запускаем софт и выбираем папку, где находится MD5 файл. Затем щелкаем на «Verify sums».

В результате откроется окно эксплорера, в котором обозначаем исходный объект и нажимаем «Открыть».

Выполняется процедура верификации, по завершению которой жмем «Close».

Способ 2: Md5Checker

Md5Checker – очередное решение для взаимодействия с рассматриваемым расширением.

  1. Запускаем программу и жмем кнопку «Add» на ее панели.

В окне каталога выбираем исходный объект и нажимаем «Открыть».

Файл добавляется и далее можно проводить действия по проверке контрольных сумм.

Способ 3: MD5 Checksum Verifier

MD5 Checksum Verifier – утилита для сверки контрольных сумм дистрибутивов.

  1. После запуска софта переходим ко вкладке «Verify check file» и щелкаем по значку с многоточием в поле «Check file».

Открывается Проводник, в котором перемещаемся к необходимой папке, выделяем файл и жмем «Открыть».

Для сверки нажимаем на кнопку «Verify check file». Для выхода из программы надо щелкнуть «Exit».

Способ 4: Smart Projects ISOBuster

Smart Projects ISOBuster предназначен для восстановления данных с поврежденных оптических дисков любого типа и работы с образами. В нем также имеется поддержка MD5.

  1. Сначала загружаем подготовленный образ диска в программу. Для этого выбираем пункт «Открыть файл-образ» в «Файл».

Осуществляем переход в каталог с образом, обозначаем его и жмем «Открыть».

Потом жмем по надписи «CD» в левой части интерфейса правой кнопкой мыши и выбираем пункт «Проверить этот образ с помощью контрольного файла MD5» в появившемся меню «Файл с контрольной суммой MD5».

В открывшемся окне отыскиваем файл контрольной суммы загруженного образа, обозначаем его и жмем «Открыть».

Начинается процесс проверки суммы MD5.

По завершении процедуры выводится сообщение «Контрольная сумма образа совпадает».

Способ 5: Блокнот

Просмотр содержимого MD5 файла можно посмотреть стандартным приложением Windows Блокнотом.

  1. Запускаем текстовый редактор и нажимаем «Открыть» в меню «Файл».

Открывается окно обозревателя, где двигаемся в нужную директорию, а затем выделяем искомый файл, предварительно выбрав в нижней правой части окна пункт «Все файлы» из выпадающего списка, и кликаем «Открыть».

Открывается содержимое указанного файла, где можно увидеть значение контрольной суммы.

Все рассмотренные приложения открывают формат MD5. MD5Summer, Md5Checker, MD5 Checksum Verifier работают только с рассматриваемым расширением, а Smart Projects ISOBuster может также создавать образы оптических дисков. Для того, чтобы посмотреть содержимое файла достаточно открыть его в Блокноте.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Как проверить хеш в Windows 10

Любая настольная операционная система, будь то Windows 10, Linux или MacOS, имеет стандартные механизмы проверки хеш-сумм любых файлов на вашем диске.

Как узнать хеш в PowerShell

PowerShell выдаст вам хеш-сумму вашего файла. По умолчанию Windows генерирует хеш SHA-265, но вы можете указать, что вам нужен хеш другого алгоритма. Для этого используйте следующие команды:

  • Get-FileHash F:\Test.txt -Algorithm MD5
  • Get-FileHash F:\Test.txt -Algorithm SHA1
  • Get-FileHash F:\Test.txt -Algorithm SHA256
  • Get-FileHash F:\Test.txt -Algorithm SHA384
  • Get-FileHash F:\Test.txt -Algorithm SHA512
  • Get-FileHash F:\Test.txt -Algorithm MACTripleDES
  • Get-FileHash F:\Test.txt -Algorithm RIPEMD160

Как проверить хеш-сумму через Командную строку

Множество действий, которые вы выполняете в PowerShell, можно сделать и в классической командной строке. Проверка хеша через Командную строку делается следующим образом.

По умолчанию Командная строка выводит на экран хеш-сумму SHA
1
, но вы можете изменить это, указав системе, какой именно хеш вы хотите получить. Для этого используйте следующие команды:

  • certutil -hashfile F:\Test.txt MD5
  • certutil -hashfile F:\Test.txt MD4
  • certutil -hashfile F:\Test.txt MD2
  • certutil -hashfile F:\Test.txt SHA512
  • certutil -hashfile F:\Test.txt SHA384
  • certutil -hashfile F:\Test.txt SHA256
  • certutil -hashfile F:\Test.txt SHA1

Как проверить хеш через HasTab

HashTab – это отличная небольшая утилита, которая упростит проверку хеш-сумм. Вам не надо будет каждый раз вводить сложные команды для проверки. Достаточно будет только зайти в свойства файла, где уже будут собраны все суммы.

Кроме того, HashTab позволяет легко сравнить хеш-суммы двух файлов. Для этого по первому файлу кликните правой кнопкой мыши, выберите Свойства
, а затем откройте вкладку Хеш-суммы файлов
. Нажмите Сравнить файл
и укажите путь к второму файлу.

Хеш-сумма второго файла отобразится в поле Сравнение хеша
, и, если суммы совпадают, возле иконки решетки будет зеленая галочка. Если не совпадают – красный крестик.

ие расчитанное по набору входных данных с помощью специального алгоритма. Контрольная сумма чаще всего используется для проверки целосности файлов. То есть в грубом приблежении контрольная сумма это ключ
, который позволяет однозначно отличить два разных набора данных (два разных файла). Например, вы скачали файл из интернета ( игры, установочный ), вы можете быть уверенны, что в процессе скачивания файл не был поврежден и был полностью загружен? А ведь использование такого «неисправного» файла зачастую приводит к ошибкам при установке игры или ОС или чего угодно. Причем о том, что ошибка возникла именно из-за поврежденного в процессе загрузки файла вы можете и не знать, обвиняя во всех проблемах свой компьютер.

Так вот, что бы избежать таких проблем и используются контрольные суммы. Часто многие ресурсы вместе со сылкой на файл оставляют и контрольную сумму этого файла. И вы, скачав этот файл, сможете сравнить контрольную сумму скачанного файла с той, которая была оставлена на ресурсе и однозначно удостовериться в том, что файл был скачан без ошибок.

Для вычисления и сравнения контрольных сумм используются специальные программы. Самая распространенная из них это HashTab
. Эта программа бесплатная. Скачать ее можно отсюда:

Для установки распакуйте архив и запустите файл установки программы.

После установки не появляется ярлык программы, нету этой программы и в меню быстрого запуска Пуск. Для того чтобы воспользоваться программой, нажмите правой кнопкой
по любому файлу и выберите пункт Свойства
(проделаем эту операцию со скачанным архивом)

Обратите внимание, что в окне свойств файла появилась новая вкладка Хеш-суммы файлов

Для того чтобы сравнить контрольные суммы файлов скопируйте хеш-сумму, с сайта программы и вставьте ее в поле Сравнение хеша
окна свойств.

У каждого файла имеется свое собственное уникальное значение, которое может быть использовано для проверки файла. Это значение носит название хэш или контрольная сумма. Оно зачастую используется разработчиками программного обеспечения при обращении к файлам. По контрольной сумму проходит сверка файла с целью выявить его целостность и совпадение с заданным идентификатором.

Есть несколько алгоритмов вычислений контрольной суммы файла, среди которых наиболее известны и распространены MD5, SHA256, SHA1, SHA384. Вычислить хэш файла, то есть его контрольную сумму, можно как стандартными инструментами Windows, так и сторонними сервисами. В рамках данной статьи рассмотрим, как это сделать.

Контрольные суммы файла

Во время копирования информации или передачи ее по сети не гарантируется ее целостность, что особенно актуально для больших объемов информации. Представьте себе, что вы скачивали из интернета установочный файл размером 900 мегабайт, как убедиться, что он загрузился полностью и без ошибок. Ведь если в нем есть ошибки, то программа может просто не установиться или во время ее работы будут возникать сбои.

Конечно можно сравнить размер полученного файла с исходным, но этого не достаточно, чтобы утверждать об идентичности двух файлов. Поэтому были разработаны специальные алгоритмы позволяющие решить эту задачу.

Мы не будем углубляться в техническую реализацию, достаточно знать, что применяя определенный алгоритм высчитывает некое значение однозначно описывающее данный файл. Оно всегда одинаковое для одних и тех же данных и называется контрольной суммой или хешем. Хотя самих алгоритмов хеширования существует множество, вот некоторые из наиболее часто встречающихся: MD5, CRC32, SHA-1, SHA256, BTIH.

Поэтому очень часто на странице загрузки указаны хеши оригинальных файлов, чтобы пользователи могли выполнить проверку после скачивания. Таким образом зная контрольную сумму оригинального файла рассчитанную по какому-либо алгоритму, мы можем проверить идентичность его копии, рассчитав для нее соответствующий хеш и сравнив с оригинальным, если они не совпадут, значит в данных есть разница. Это можно использовать не только для проверки целостности данных загруженных из интернета, но и для сравнения двух файлов в компьютере или, например для проверки корректности записи данных на Узнав о необходимости выполнить проверку, начинающие пользователи компьютера часто не знают, как проверить хеш файлов, хотя это делается очень просто. В разных операционных системах данная операция выполняется по-разному.

4«Взлом» контрольной суммы CRC32 и CRC16

Кратко затронем вопрос «взлома» CRC32. И прежде всего давайте определимся с понятием «взлом» применительно к данному вопросу.

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

Допустим, вы имеете файл и рассчитали его контрольную сумму. Вам нужно изменить в нём произвольное число байтов, сохранив при этом контрольную сумму. Сделать это совсем не сложно.

Для начала нужно посчитать обычным образом контрольную сумму CRC32, CRC16 или любую другую, какая вам нужна, для этого изменённого файла. Пусть это будет C1. Теперь нужно добавить такое же число нулевых байтов в конец файла, которое содержится в контрольной сумме (для CRC32 – 4 байта, для CRC16 – 2 байта, и т.д.). Можно простым перебором подобрать такое число C2, которое мы и запишем в эти нулевые байты. Ведь понятно, что полный диапазон всех допустимых значений CRC32 укладывается в 232 ~ 4,295 млрд. То есть за 4 с небольшим миллиарда итераций расчёта контрольной суммы с начальным содержимым регистра, равным С1, мы брутфорсом («в лоб», методом грубой силы) подберём нужное значение. При современных вычислительных мощностях это не составит проблемы. А уж «взломать» с помощью перебора CRC16 вообще дело нескольких секунд.

Можно ли разместить нулевые байты в середине или начале файла? Можно. К операции XOR применим сочетательный закон: a XOR (b XOR c) = (a XOR b) XOR c, поэтому можно с успехом разбить файл на 3 части: до вставки, после вставки, и сама вставка. Посчитать CRC для первых двух частей (C1 и C2 на иллюстрации), объединить их операцией XOR, заполнить этим числом начальное содержимое регистра, а затем «сбрутфорсить» CRC оставшейся третьей части X.

+-----------------+-----+---------+
|        c1       |  x  |   c2    |
+-----------------+-----+---------+

Есть более интеллектуальный и изящный способ подогнать CRC под нужное значение. Суть его в том, что вместо последовательного перебора всех подряд значений мы «прокручиваем назад» несколько раз (по числу байтов или битов контрольной суммы) наш табличный алгоритм или алгоритм побитового сдвига до тех пор, пока CRC не будет желаемой. На эту тему есть подробные и качественные материалы в сети.

Таким образом, напрашивается вывод: контрольная сумма типа CRC хорошо подходит для проверки целостности данных при случайных искажениях информации в канале передачи данных, но совершенно не подходит для защиты от намеренного взлома.

Технология

В основе контрольной суммы лежит программный алгоритм, который используется для создания кодов, которые мы видели. В случае наших примеров мы использовали очень распространенный алгоритм, известный как SHA-256 ( алгоритм безопасного хеширования — 256 бит ). Этот алгоритм представляет собой тип криптографической хэш — функции (CHF), с исходными данными, меченных в качестве сообщения, а выход которого называют значение хеш — функции или просто хэш (контрольная сумма, в данном случае).

SHA-256, разработанный АНБ и выпущенный почти 20 лет назад, относится к классу CHF, широко используемых во всем мире. Их популярность сводится к тому, что они работают быстро и устойчивы к попыткам «взломать» код, хотя в наши дни доступны гораздо лучшие варианты.

У каждого алгоритма свой способ работы, но мы сосредоточимся только на том, что делает SHA-256. Процесс всегда дает хэш фиксированной длины (в данном случае 256 бит), независимо от размера сообщения, хотя технически это фактически 8 значений, каждое размером 32 бита.

Таким образом, контрольная сумма для нашего файла test1 на самом деле 798B3808 4999FA50 E7D1861E 07E45F4E 3AA39668 DC6A12A8 4A058CAA A32DE0EB. Это было записано в шестнадцатеричном формате — записать его как строку из 256 единиц и нулей было бы очень утомительно!

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

Например, предположим, что мы пытаемся найти контрольную сумму файла, общий размер которого составляет 10145 бит. Это будет разделено на 19 целых блоков, оставив 417 бит для заполнения. Чтобы указать, где заканчиваются данные и начинается заполнение, к концу строки битов, составляющей источник, добавляется 1. Итак, здесь заполнение добавит 352 нуля.

Погодите, а почему это не 416? Самая последняя часть последнего блока — это особое 64-битное число: длина исходного файла. Это означает, что в нашем примере 20-й блок должен заканчиваться двоичным значением 10145, в результате чего сообщение требует для заполнения только 402 бита пустого пространства.

Как только это будет сделано, алгоритм берет самый первый 512-битный блок и разбивает его на 16 частей, каждая из которых имеет длину 32 бита; каждое из этих значений будет использоваться в процессе вычисления хэша.

До этого момента это самая простая часть: остальная часть процесса включает в себя много математики.

Производители микросхем, такие как Intel, предлагают архитектурные решения для устройств FPGA для расчета хэш-значений SHA-256.

Все это выходит далеко за рамки этой статьи, но если вам интересно вникнуть в это более подробно, вы можете прочитать об этом здесь. Но чтобы дать вам краткий обзор, сначала нужно создать начальный хеш с использованием первых 8 простых чисел. Они проходят через уравнение, чтобы получить значение длиной 256 бит, которое затем изменяется снова и снова, поскольку остальная часть алгоритма проходит через все части в каждом блоке из обработанных исходных данных.

Звучит ужасно сложно, да? Однако для современного процессора это совсем несложно.

Для генерации хэша требуется не более дюжины или около того циклов процессора для каждого байта исходных данных.

5Программа для расчёта контрольной суммы по алгоритмам CRC32, CRC16 и CRC8

На основе приведённого алгоритма была написана программа – калькулятор для расчёта контрольных сумм по алгоритмам CRC32, CRC16 и CRC8. Внешний вид окна приведён на рисунке. Программа работает под ОС Windows и требует .NET версии 3.5.

Интерфейс программы для расчёта контрольной суммы по алгоритмам CRC32, CRC16 и CRC8

Программа позволяет рассчитывать CRC массива байтов (введённого в поле «Сообщение») или указанного файла. Все рассмотренные выше параметры контрольной суммы настраиваются через интерфейс программы.

Ну и напоследок выкладываю ссылки на архив, в архиве лежат: программа «Калькулятор CRC», оригинальная статья «A Painless Guide to CRC Error Detection Algorithms», класс RocksoftCrcModel() на Visual Basic.NET и на C#.

Содержимое архива «CRC calculator»

Итак, подведём итоги. В этой статье мы:
– узнали, что такое контрольная сумма CRC и какие бывают её виды;
– научились считать CRC методом побитового сдвига и табличным методом;
– узнали алгоритмы «взлома» CRC и сделали вывод об области применимости контрольной суммы типа CRC.

Алгоритмы

Байт четности или слово четности

Простейший алгоритм контрольной суммы — это так называемая продольная проверка четности , которая разбивает данные на «слова» с фиксированным числом битов n , а затем вычисляет исключающее ИЛИ (XOR) для всех этих слов. Результат добавляется к сообщению в виде дополнительного слова. Чтобы проверить целостность сообщения, получатель вычисляет исключающее или всех его слов, включая контрольную сумму; если результатом не является слово, состоящее из n нулей, получатель знает, что произошла ошибка передачи.

С этой контрольной суммой любая ошибка передачи, которая переворачивает один бит сообщения или нечетное количество битов, будет обнаружена как неправильная контрольная сумма. Однако ошибка, затрагивающая два бита, не будет обнаружена, если эти биты находятся в одной и той же позиции в двух разных словах. Также перестановка двух и более слов не будет обнаружена. Если затронутые биты независимо выбраны случайным образом, вероятность того, что двухбитовая ошибка не будет обнаружена, равна 1 / n .

Сумма дополнения

Вариант предыдущего алгоритма состоит в том, чтобы сложить все «слова» как двоичные числа без знака, отбросив любые биты переполнения, и добавить два дополнения к итоговой сумме в качестве контрольной суммы. Чтобы проверить сообщение, получатель таким же образом складывает все слова, включая контрольную сумму; если результат — не слово, полное нулей, вероятно, произошла ошибка. Этот вариант также обнаруживает любую однобитовую ошибку, но в SAE J1708 используется модульная сумма .

Зависит от позиции

Простые контрольные суммы, описанные выше, не позволяют обнаружить некоторые общие ошибки, которые затрагивают сразу несколько битов, такие как изменение порядка слов данных или вставка или удаление слов со всеми битами, установленными в ноль. Алгоритмы контрольной суммы, наиболее используемые на практике, такие как контрольная сумма Флетчера , Adler-32 и циклические проверки избыточности (CRC), устраняют эти недостатки, учитывая не только значение каждого слова, но и его позицию в последовательности. Эта функция обычно увеличивает стоимость вычисления контрольной суммы.

Нечеткая контрольная сумма

Идея нечеткой контрольной суммы была разработана для обнаружения спама в электронной почте путем создания совместных баз данных от нескольких интернет-провайдеров электронной почты, подозреваемой в спаме. Содержание такого спама часто может отличаться по деталям, что делает обычное вычисление контрольной суммы неэффективным. Напротив, «нечеткая контрольная сумма» сокращает основной текст до характерного минимума, а затем генерирует контрольную сумму обычным образом. Это значительно увеличивает вероятность того, что несколько различающиеся спам-письма будут давать одинаковую контрольную сумму. Программное обеспечение для обнаружения спама интернет-провайдеров, такое как SpamAssassin , сотрудничающих с интернет-провайдерами, отправляет контрольные суммы всех электронных писем в централизованную службу, такую ​​как DCC . Если количество отправленных нечетких контрольных сумм превышает определенный порог, база данных отмечает, что это, вероятно, указывает на спам. Пользователи службы ISP аналогичным образом генерируют нечеткую контрольную сумму для каждого из своих электронных писем и запрашивают службу на предмет вероятности спама.

Общие Соображения

Сообщение длиной m бит можно рассматривать как угол m -мерного гиперкуба. Эффект алгоритма контрольной суммы, который дает n- битную контрольную сумму, заключается в отображении каждого m- битного сообщения в угол большего гиперкуба с размерностью m + n . В 2 м + п углов этого гиперкуба представляют все возможные принятые сообщения. Допустимые полученные сообщения (те, которые имеют правильную контрольную сумму) составляют меньший набор, всего с 2 м углами.

Тогда однобитовая ошибка передачи соответствует смещению от допустимого угла (правильное сообщение и контрольная сумма) к одному из m смежных углов. Ошибка, затрагивающая k бит, перемещает сообщение в угол, который на k шагов удаляется из его правильного угла. Цель хорошего алгоритма контрольной суммы состоит в том, чтобы раздвинуть допустимые углы как можно дальше друг от друга, чтобы увеличить вероятность того, что «типичные» ошибки передачи окажутся в недопустимом углу.

HashTab — определяем контрольные суммы файла

6. Окончательное содержимое регистра комбинируется по XOR со значением FFFFh.

Примечание: в программной реализации сначала выполняется проверка старшего бита, и только потом — сдвиг содержимого регистра.

Для ускорения расчёта CRC используется табличный алгоритм. Его суть состоит в следующем: при выполнении операции XOR содержимого регистра с постоянной величиной при различных её сдвигах всегда будет существовать некоторое значение, которое при применении операции XOR с исходным содержимым регистра даст тот же самый результат. А значит, можно составить таблицу таких величин, где индексом является исходное содержимое регистра. Эта таблица позволяет значительно ускорить расчёт CRC заменой восьми операций сдвига одной операцией поиска по таблице.

Всего значений в таблице 256. Поэтому при ее расчёте выполняется цикл по 256 значениям (от 0 до 255):

1.Очередной индекс помещается в регистр. Так как индекс представляет собой один байт, а величина полинома и регистра — два байта, индекс помещается в старший байт регистра, а младший байт заполнен нулями.

2. Содержимое регистра восемь раз сдвигается влево по одному биту. Каждый раз проверяется выдвинутый бит. Если из регистра был выдвинут бит со значением «1», то содержимое регистра комбинируется по XOR с полиномом. Если значение бита равно «0», XOR не выполняется.

3. Полученная двухбайтовая величина заносится в таблицу по индексу.

После того как таблица рассчитана, можно использовать табличный алгоритм CRC:

1. Сдвиг регистра на 1 байт влево с чтением нового байта сообщения.

2. XOR старшего байта, только что выдвинутого из регистра с новым байтом сообщения, что даёт индекс в таблице .

3. XOR табличного значения с содержимым регистра.

4. Если ещё есть байты данных, перейти к шагу 1.

В данной статье используется описанный выше табличный алгоритм.

Код для расчёта таблицы:

Код для расчёта CRC:

PIClist-RUS (piclist.ru), 2007 г.

Как создать MD5-хеш файлов с помощью MD5Checker?

Несмотря на то, что MD5-алгоритм доступен во многих файл-менеджерах и утилитах, не всеми из них удобно пользоваться. Часть программ не умеют проверять хэши для группы файлов. Другая часть программ хоть и делает это, но не выводит в удобном виде отчет о результатах проверки — приходится вручную прокручивать весь список файлов для выявления сообщений об ошибках.

Единственная максимально удобная программа для работы с MD5 — это приложение MD5Checker. Скачать программу можно с официального сайта. Несмотря на то, что программа имеет англоязычный интерфейс, пользоваться ей достаточно просто.

Программа по умолчанию настроена на хеширование программных файлов, архивов и ISO-образов. Поэтому если Вы хотите пользоваться этим приложением допустим для музыки и видео, то необходимо для начала поменять одну единственную настройку — указать маску для файлов, с которыми будет работать программа. Для этого нужно зайти в пункт меню «Tools / Options» и в поле «Include» указать символ * (что означает «все файлы»).

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

Для создания MD5-хеша нужно перетащить выбранные файлы из папки в окно программы — и программа автоматически начнет вычислять MD5-суммы для всех выбранных файлов и всех файлов в подпапках (удовлетворяющих заданной нами маске). Посчитанные суммы будут отображены в столбце «Current MD5» («Текущая MD5»). Теперь остается только сохранить полученные значения в файл, нажав кнопку «S To» («Сохранить в»).

При этом важно отметить, что если сохранить MD5-файл в папке, в которой находятся все выбранные нами файлы и подпапки, то будут сохранены относительные пути к ним. Это позволит в будущем проверять контрольную сумму даже если перенести файлы в другое месторасположение

Поэтому перед сохранением файла имеет смысл перейти в корень папки, нажав соответствующую кнопку.

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

При этом можно убедиться, что пути к файлам сохранены относительные, т.е. не содержат буквы диска, на котором расположены. Такой MD5-файл можно хранить в папке вместе с файлами, и в будущем на любом компьютере проверять целостность файлов этой папки.

Блок CRC в 1986ВЕ4У и 1986ВК234

Как уже ранее было отмечено, блок аппаратного расчёта контрольной суммы присутствует в двух МК Миландра серии 1986 на базе ядра Cortex-M0: 1986ВЕ4У и 1986ВК234. Представлен он 5-тю регистрами: управления, статуса, входных/выходных данных и регистра задания полинома. Блок имеет возможность выполнять расчёт только 16-битного crc, о чём говорит «1» старшего разряда регистра CRC_POL, которую нельзя изменить. Блок на вход может принимать 8-ми, 16-ти, 32-х битные слова данных, может обрабатывать их как в прямом, так и в обратном порядке (со старшего бита). Скорость расчёт составляет 2 бита /PCLK. В контроллере реализовано FIFO на 4 отсчёта, а также канал DMA для загрузки новых слов. Запрос к DMA формируется при условии опустошения FIFO. В стандартном Software Pack для Keil под 4У есть небольшой примеры работы с блоком CRC. Попробуем его рассмотреть, а сам пример будет приложен к данному материалу. Настройки блока максимально простые. Необходимо, как всегда, разрешить тактирование самого блока в регистре PER2_CLOCK и провести его инициализацию, которая, по сути, заключается в задании полинома и стартового значения:

Здесь функция CRC_StructInit просто присваивает элементам входной структуры значения по умолчанию:

Поэтому, основные настройки, в данном примере — это задание полинома и начального значения. Когда блок настроен, можно разрешать его работу, а затем заполнять FIFO данными. В стандартном примере входными данными является массив из 9 элементов, но, как мы помним, блок контрольный суммы в своём распоряжении имеет FIFO только на 4 отсчёта, поэтому, загружая данные, необходимо дождаться появления свободного отсчёта в FIFO.

Итак, после прогона всего массива элементов мы получим конечное значение контрольный суммы, рассчитанное аппаратным блоком микроконтроллера. Это значение сравнивается со значением CRC, полученным с помощью функции программного расчёта CRC, на вход которой подаётся тот же массив исходных данных. Функции программного расчета CRC доступны на просторах интернета. Воспользуемся одной из них. Реализация функции приведена ниже. Входными данными является указатель на массив данных и его размерность, возвращает функция CRC.

Таблица CRC16Table:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector