Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Функция GrdCRC позволяет подсчитать 32-битный CRC участка памяти. Данная функция удобна для экспресс-анализа и контроля целостности кода или данных.

 

Wiki Markup
{dojo-tabs:theme=tundra|id=1}
{dojo-tab:title=C|selected=true}
*C*
DWORD GRD_API GrdCRC (	
  void *pData,
  DWORD dwLng,
  DWORD dwPrevCRC
);	
{dojo-tab}
{dojo-tab:title=C#|selected=true}
*C#*

{dojo-tab}
{dojo-tab:title=Visual Basic (Declaration)}
*Visual Basic*

{dojo-tab}
{dojo-tab:title=Visual C++}
*Visual C++*

{dojo-tab}
{dojo-tabs}
Expand
titleВходные параметры

pData

адрес участка памяти для подсчета CRC

dwLng

длина (в байтах) участка памяти

dwPrevCRC

CRC предыдущего участка памяти, при последовательном вычислении CRC для нескольких буферов

Expand
titleВыходные параметры

32-битный (4 байта) CRC участка памяти.

Expand
titleОписание

Функция GrdCRC позволяет подсчитать CRC (циклический избыточный код) участка памяти или буфера. CRC обычно используется как контрольная сумма каких-либо данных (изменение хотя бы одного бита данных, с приемлемой в большинстве случаев вероятностью, приведет к существенному изменению значения CRC). Параметр pData задает адрес участка памяти, а dwLng - длину этого участка в байтах. Если необходимо подсчитать общий CRC нескольких участков, в параметр dwPrevCRC при подсчете CRC каждого следующего участка нужно занести CRC, подсчитанный на предыдущем этапе. Иначе параметр dwPrevCRC должен содержать -1 (константа Grd_StartCRC). Функция GrdCRC не возвращает никакого кода ошибки.

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

Expand
titleПример

Пример для используемого средства разработки см. в директории:

"\%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\x86\Win32\General Guardant API\"
или
"\%Program Files%\Guardant\Guardant 6\%Public Code%\Samples\x64\Win64\General Guardant API\"