Jump to content

Проверка циклическим избыточностью

(Перенаправлено с CRC-16 )

Проверка циклическим избыточным кодом ( CRC ) — это код обнаружения ошибок, обычно используемый в цифровых сетях и устройствах хранения для обнаружения случайных изменений цифровых данных. [ 1 ] [ 2 ] Блокам данных, поступающим в эти системы, присваивается короткое проверочное значение , основанное на остатке полиномиального деления их содержимого. При извлечении расчет повторяется, и в случае несоответствия проверочных значений можно предпринять корректирующие действия против повреждения данных. CRC можно использовать для исправления ошибок (см. битовые фильтры ). [ 3 ]

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

Введение

[ редактировать ]

CRC основаны на теории циклических кодов, исправляющих ошибки . Использование систематических циклических кодов, которые кодируют сообщения путем добавления проверочного значения фиксированной длины, с целью обнаружения ошибок в сетях связи, было впервые предложено У. Уэсли Петерсоном в 1961 году. [ 4 ] Циклические коды не только просты в реализации, но и особенно хорошо подходят для обнаружения пакетов ошибок : последовательных последовательностей ошибочных символов данных в сообщениях. Это важно, поскольку пакетные ошибки являются распространенными ошибками передачи во многих каналах связи , включая магнитные и оптические запоминающие устройства. Обычно n -битная CRC, примененная к блоку данных произвольной длины, обнаруживает любой одиночный пакет ошибок длиной не более n бит, а доля всех более длинных пакетов ошибок, которые она обнаруживает, составляет примерно (1 - 2 п ) .

Спецификация кода CRC требует определения так называемого генераторного полинома . Этот многочлен становится делителем в полиномиальном делении на длинные позиции , которое принимает сообщение в качестве делимого и в котором частное отбрасывается, а результатом становится остаток . Важным предостережением является то, что коэффициенты полинома вычисляются согласно арифметике конечного поля , поэтому операцию сложения всегда можно выполнить поразрядно-параллельно (нет переноса между цифрами).

На практике все обычно используемые CRC используют конечное поле из двух элементов GF(2) . Эти два элемента обычно называются 0 и 1, что удобно соответствует компьютерной архитектуре.

CRC называется n- битным CRC, если его проверочное значение имеет длину n бит. Для данного n возможно несколько CRC, каждый из которых имеет свой полином. Такой многочлен имеет высшую степень n , что означает, что он имеет n + 1 член. Другими словами, полином имеет длину n + 1 ; для его кодирования требуется n + 1 бит. Обратите внимание, что в большинстве спецификаций полиномов либо отбрасываются MSB , либо LSB , поскольку они всегда равны 1. CRC и связанный с ним полином обычно имеют имя в форме CRC- n -XXX, как показано в таблице ниже.

Простейшая система обнаружения ошибок, бит четности , на самом деле представляет собой 1-битную CRC: она использует генераторный полином x + 1 (два члена), [ 5 ] и имеет название CRC-1.

Приложение

[ редактировать ]

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

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

Если значения CRC не совпадают, то блок содержит ошибку данных.

Устройство может предпринять корректирующие действия, например перечитать блок или запросить его повторную отправку. В противном случае предполагается, что данные не содержат ошибок (хотя с некоторой небольшой вероятностью они могут содержать необнаруженные ошибки; это заложено в природе проверки ошибок). [ 6 ]

Целостность данных

[ редактировать ]

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

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

Во-вторых, в отличие от криптографических хэш-функций, CRC является легко обратимой функцией, что делает ее непригодной для использования в цифровых подписях. [ 7 ]

В-третьих, CRC удовлетворяет соотношению, аналогичному соотношению линейной функции (или, точнее, аффинной функции ): [ 8 ]

где зависит от длины и . Это также можно сформулировать следующим образом, где , и иметь одинаковую длину

в результате, даже если CRC зашифрован с помощью потокового шифра , который использует XOR в качестве операции объединения (или режим блочного шифрования , который эффективно превращает его в потоковый шифр, такой как OFB или CFB), как сообщение, так и связанный с ним CRC можно манипулировать без знания ключа шифрования; это был один из хорошо известных конструктивных недостатков протокола Wired Equiвалентной конфиденциальности (WEP). [ 9 ]

Вычисление

[ редактировать ]

Чтобы вычислить n -битную двоичную CRC, выстройте в строку биты, представляющие входные данные, и расположите ( n + 1 )-битный шаблон, представляющий делитель CRC (называемый « полином »), под левым концом строки.

В этом примере мы закодируем 14 бит сообщения с помощью 3-битного CRC с полиномом x 3 + х + 1 . Полином записывается в двоичном виде в виде коэффициентов; полином 3-й степени имеет 4 коэффициента ( 1 x 3 + 0 х 2 + 1 х + 1 ). В данном случае коэффициенты равны 1, 0, 1 и 1. Результат вычисления имеет длину 3 бита, поэтому его называют 3-битным CRC. Однако для явного указания полинома вам нужны 4 бита.

Начните с сообщения, которое нужно закодировать:

11010011101100

Сначала он дополняется нулями, соответствующими битовой длине n CRC. Это делается для того, чтобы полученное кодовое слово имело систематическую форму. Вот первый расчет для вычисления 3-битной CRC:

11010011101100 000 <--- input right padded by 3 bits
1011               <--- divisor (4 bits) = x³ + x + 1
------------------
01100011101100 000 <--- result

Алгоритм на каждом шаге воздействует на биты непосредственно над делителем. Результатом этой итерации является побитовое исключающее ИЛИ делителя полинома с битами выше него. Биты, не расположенные выше делителя, на этом этапе просто копируются непосредственно ниже. Затем делитель сдвигается вправо, чтобы совместиться с самым старшим оставшимся 1 битом во входных данных, и процесс повторяется до тех пор, пока делитель не достигнет правого конца входной строки. Вот весь расчет:

11010011101100 000 <--- input right padded by 3 bits
1011               <--- divisor
01100011101100 000 <--- result (note the first four bits are the XOR with the divisor beneath, the rest of the bits are unchanged)
 1011              <--- divisor ...
00111011101100 000
  1011
00010111101100 000
   1011
00000001101100 000 <--- note that the divisor moves over to align with the next 1 in the dividend (since quotient for that step was zero)
       1011             (in other words, it doesn't necessarily move one bit per iteration)
00000000110100 000
        1011
00000000011000 000
         1011
00000000001110 000
          1011
00000000000101 000
           101 1
-----------------
00000000000000 100 <--- remainder (3 bits).  Division algorithm stops here as dividend is equal to zero.

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

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

11010011101100 100 <--- input with check value
1011               <--- divisor
01100011101100 100 <--- result
 1011              <--- divisor ...
00111011101100 100

......

00000000001110 100
          1011
00000000000101 100
           101 1
------------------
00000000000000 000 <--- remainder

Следующий код Python описывает функцию, которая будет возвращать начальный остаток CRC для выбранного входного сигнала и полинома с начальным заполнением либо 1, либо 0. Обратите внимание, что этот код работает со строковыми входными данными, а не с необработанными числами:

def crc_remainder(input_bitstring, polynomial_bitstring, initial_filler):
    """Calculate the CRC remainder of a string of bits using a chosen polynomial.
    initial_filler should be '1' or '0'.
    """
    polynomial_bitstring = polynomial_bitstring.lstrip('0')
    len_input = len(input_bitstring)
    initial_padding = (len(polynomial_bitstring) - 1) * initial_filler
    input_padded_array = list(input_bitstring + initial_padding)
    while '1' in input_padded_array[:len_input]:
        cur_shift = input_padded_array.index('1')
        for i in range(len(polynomial_bitstring)):
            input_padded_array[cur_shift + i] \
            = str(int(polynomial_bitstring[i] != input_padded_array[cur_shift + i]))
    return ''.join(input_padded_array)[len_input:]

def crc_check(input_bitstring, polynomial_bitstring, check_value):
    """Calculate the CRC check of a string of bits using a chosen polynomial."""
    polynomial_bitstring = polynomial_bitstring.lstrip('0')
    len_input = len(input_bitstring)
    initial_padding = check_value
    input_padded_array = list(input_bitstring + initial_padding)
    while '1' in input_padded_array[:len_input]:
        cur_shift = input_padded_array.index('1')
        for i in range(len(polynomial_bitstring)):
            input_padded_array[cur_shift + i] \
            = str(int(polynomial_bitstring[i] != input_padded_array[cur_shift + i]))
    return ('1' not in ''.join(input_padded_array)[len_input:])
>>> crc_remainder('11010011101100', '1011', '0')
'100'
>>> crc_check('11010011101100', '1011', '100')
True

Математика

[ редактировать ]

Математический анализ этого процесса, похожего на деление, показывает, как выбрать делитель, который гарантирует хорошие свойства обнаружения ошибок. В этом анализе цифры битовых строк принимаются как коэффициенты многочлена от некоторой переменной x - коэффициенты, которые являются элементами конечного поля GF(2) (целые числа по модулю 2, т.е. либо ноль, либо единица), вместо более привычных цифр. Множество бинарных полиномов представляет собой математическое кольцо .

Проектирование полиномов

[ редактировать ]

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

Наиболее важным атрибутом многочлена является его длина (наибольшая степень (показатель) +1 любого члена полинома) из-за его прямого влияния на длину вычисленного проверочного значения.

Наиболее часто используемые длины полиномов — 9 бит (CRC-8), 17 бит (CRC-16), 33 бита (CRC-32) и 65 бит (CRC-64). [ 5 ]

CRC называется n- битным CRC, если его проверочное значение равно n -битам. Для данного n возможно несколько CRC, каждый из которых имеет свой полином. Такой многочлен имеет высшую степень n и, следовательно, n + 1 членов (многочлен имеет длину n + 1 ). Остаток имеет длину n . CRC имеет имя вида CRC- n -XXX.

Конструкция полинома CRC зависит от максимальной общей длины защищаемого блока (данные + биты CRC), желаемых функций защиты от ошибок и типа ресурсов для реализации CRC, а также желаемой производительности. Распространенным заблуждением является то, что «лучшие» полиномы CRC получаются либо из неприводимых полиномов , либо из неприводимых полиномов, умноженных на коэффициент 1 + x , что добавляет к коду возможность обнаруживать все ошибки, влияющие на нечетное количество битов. [ 10 ] В действительности все описанные выше факторы должны учитываться при выборе полинома и могут привести к приводимому полиному. Однако выбор приводимого многочлена приведет к определенной доле пропущенных ошибок из-за того, что факторкольцо имеет делители нуля .

Преимущество выбора примитивного полинома в качестве генератора кода CRC состоит в том, что результирующий код имеет максимальную общую длину блока в том смысле, что все 1-битные ошибки в пределах этой длины блока имеют разные остатки (также называемые синдромами ), и, следовательно, поскольку остаток является линейной функцией блока, код может обнаружить все 2-битные ошибки в пределах этой длины блока. Если — степень полинома примитивного генератора, то максимальная общая длина блока равна , а связанный с ним код способен обнаруживать любые однобитные или двухбитовые ошибки. [ 11 ] Мы можем улучшить эту ситуацию. Если мы используем генераторный полином , где является примитивным полиномом степени , то максимальная общая длина блока равна , и код способен обнаруживать одиночные, двойные, тройные и любое нечетное количество ошибок.

Полином который допускает другие факторизации, могут быть выбраны таким образом, чтобы сбалансировать максимальную общую длину блока с желаемой способностью обнаружения ошибок. Коды BCH представляют собой мощный класс таких полиномов. Они включают в себя два приведенных выше примера. Независимо от свойств сводимости генераторного полинома степени r , если он включает член «+1», код сможет обнаружить шаблоны ошибок, которые ограничены окном из r смежных битов. Эти шаблоны называются «пакетами ошибок».

Спецификация

[ редактировать ]

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

  • Иногда реализация добавляет фиксированный битовый шаблон к проверяемому потоку битов. Это полезно, когда ошибки синхронизации могут привести к вставке 0-битов перед сообщением, изменение, которое в противном случае оставило бы проверочное значение неизменным.
  • Обычно, но не всегда, реализация добавляет n нулевых битов ( n — размер CRC) к потоку битов, который необходимо проверить, прежде чем произойдет полиномиальное деление. Такое добавление явно продемонстрировано в статье «Вычисление CRC» . Это удобно тем, что остаток исходного потока битов с добавленным проверочным значением равен точно нулю, поэтому CRC можно проверить, просто выполнив полиномиальное деление полученного потока битов и сравнив остаток с нулем. Благодаря ассоциативным и коммутативным свойствам операции «исключающее-или» практические реализации на основе таблиц могут получить результат, численно эквивалентный добавлению нулей, без явного добавления каких-либо нулей, используя эквивалент: [ 10 ] более быстрый алгоритм, который объединяет битовый поток сообщения с потоком, сдвигаемым из регистра CRC.
  • Иногда реализация применяет исключающее ИЛИ фиксированную битовую комбинацию к остатку полиномиального деления.
  • Порядок битов: в некоторых схемах младший бит каждого байта рассматривается как «первый», что затем при полиномиальном делении означает «крайний левый», что противоречит нашему обычному пониманию «младшего порядка». Это соглашение имеет смысл, когда передача через последовательный порт проверяется аппаратно с помощью CRC, поскольку некоторые широко распространенные соглашения о передаче через последовательный порт передают сначала младший бит байта.
  • Порядок байтов. При использовании многобайтовых CRC может возникнуть путаница в отношении того, является ли байт, передаваемый первым (или сохраняемый в байте памяти с наименьшим адресом), наименее значимым байтом (LSB) или наиболее значимым байтом (MSB). Например, некоторые 16-битные схемы CRC меняют местами байты проверочного значения.
  • Пропуск старшего бита полинома делителя: поскольку старший бит всегда равен 1 и поскольку n определяться ( n + 1 )-битным делителем, который переполняет регистр n -битный -битный CRC должен , некоторые авторы полагают, что нет необходимости упоминать старший бит делителя.
  • Отсутствие младшего бита полинома делителя: поскольку младший бит всегда равен 1, такие авторы, как Филип Купман, представляют полиномы с неповрежденным старшим битом, но без младшего бита ( или 1 семестр). Это соглашение кодирует полином со всей его степенью в одно целое число.

Эти сложности означают, что существует три распространенных способа выразить полином в виде целого числа: первые два, которые являются зеркальным отображением в двоичном формате, представляют собой константы, найденные в коде; третье — число, найденное в бумагах Купмана. В каждом случае один термин опускается. Итак, полином может быть записано как:

  • 0x3 = 0b0011, представляющий (старший старший код)
  • 0xC = 0b1100, представляющий (LSB-первый код)
  • 0x9 = 0b1001, представляющий (обозначение Купмана)

В таблице ниже они показаны как:

Примеры представлений CRC
Имя Нормальный Перевернутый Обратная обратная связь
КПР-4 0x3 0xC 0x9

Обфускация

[ редактировать ]

CRC в проприетарных протоколах можно запутать с помощью нетривиального начального значения и конечного XOR, но эти методы не добавляют криптографической стойкости алгоритму и могут быть реконструированы с использованием простых методов. [ 12 ]

Стандарты и общее использование

[ редактировать ]

Многочисленные разновидности проверок циклическим избыточным кодом были включены в технические стандарты . Ни в коем случае один алгоритм или один алгоритм каждой степени не подходит для всех целей; Купман и Чакраварти рекомендуют выбирать полином в соответствии с требованиями приложения и ожидаемым распределением длин сообщений. [ 13 ] Количество различных используемых CRC сбило разработчиков с толку, и авторы пытались решить эту ситуацию. [ 10 ] Для CRC-12 сообщается о трех полиномах: [ 13 ] двадцать два противоречивых определения CRC-16 и семь CRC-32. [ 14 ]

Обычно применяемые полиномы не являются наиболее эффективными. С 1993 года Купман, Кастаньоли и другие исследовали пространство полиномов размером от 3 до 64 бит. [ 13 ] [ 15 ] [ 16 ] [ 17 ] найти примеры, которые имеют гораздо лучшую производительность (с точки зрения расстояния Хэмминга для заданного размера сообщения), чем полиномы более ранних протоколов, и опубликовать лучшие из них с целью улучшения способности обнаружения ошибок будущих стандартов. [ 16 ] В частности, iSCSI и SCTP приняли один из результатов этого исследования — полином CRC-32C (Кастаньоли).

Разработка 32-битного полинома, наиболее часто используемого организациями по стандартизации, CRC-32-IEEE, стала результатом совместных усилий Римской лаборатории и отдела электронных систем ВВС Джозефа Хаммонда, Джеймса Брауна и Шайан-Шианг Лю. из Технологического института Джорджии и Кеннет Брайер из Mitre Corporation . Самые ранние известные появления 32-битного полинома были в публикациях 1975 года: Технический отчет 2956 Брайера для Mitre, опубликованный в январе и выпущенный для публичного распространения через DTIC в августе, [ 18 ] и отчет Хаммонда, Брауна и Лю для Римской лаборатории, опубликованный в мае. [ 19 ] Оба отчета содержали вклад другой команды. В декабре 1975 года Брайер и Хаммонд представили свою работу в докладе на Национальной телекоммуникационной конференции IEEE: полином IEEE CRC-32 является порождающим полиномом кода Хэмминга и был выбран из-за его эффективности обнаружения ошибок. [ 20 ] Несмотря на это, полином Кастаньоли CRC-32C, используемый в iSCSI или SCTP, соответствует его производительности для сообщений от 58 бит до 131 кбит и превосходит его в нескольких диапазонах размеров, включая два наиболее распространенных размера интернет-пакета. [ 16 ] Стандарт ITU-T G.hn также использует CRC-32C для обнаружения ошибок в полезной нагрузке (хотя для заголовков PHY он использует CRC-16-CCITT ).

Вычисление CRC-32C реализовано аппаратно как операция ( CRC32) набора инструкций SSE4.2 , впервые представленного в Intel процессоров микроархитектуре Nehalem . Архитектура ARM AArch64 также обеспечивает аппаратное ускорение операций CRC-32 и CRC-32C.

Полиномиальные представления

[ редактировать ]

В таблице ниже перечислены только полиномы различных используемых алгоритмов. Вариации конкретного протокола могут налагать прединверсию, постинверсию и обратный порядок битов, как описано выше. Например, CRC32, используемый в Gzip и Bzip2, использует один и тот же полином, но Gzip использует обратный порядок битов, а Bzip2 — нет. [ 14 ] Обратите внимание, что даже полиномы четности в GF(2) со степенью больше 1 никогда не являются примитивными. Даже полином четности, помеченный как примитивный в этой таблице, представляет собой примитивный полином, умноженный на . Самый старший бит многочлена всегда равен 1 и не отображается в шестнадцатеричных представлениях.

Имя Использование Полиномиальные представления Паритет [ 21 ] Примитивный [ 22 ] Максимальное количество бит полезной нагрузки по расстоянию Хэмминга [ 23 ] [ 16 ] [ 22 ]
Нормальный Перевернутый Взаимный Обратная обратная связь ≥ 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 [ 24 ]
КПР-1 большая часть аппаратного обеспечения; также известный как бит четности 0x1 0x1 0x1 0x1 даже
CRC-3- GSM мобильные сети [ 25 ] 0x3 0x6 0x5 0x5 странный да [ 26 ] 4
CRC-4-МСЭ МСЭ-Т G.704 , стр. 12 0x3 0xC 0x9 0x9 странный
CRC-5-EPC RFID 2-го поколения [ 27 ] 0x09 0x12 0x05 0x14 странный
CRC-5-МСЭ ИТ-Т G.704 , с. 9 0x15 0x15 0x0B 0x1A даже
CRC-5-USB USB- Пакеты токенов 0x05 0x14 0x09 0x12 странный
CRC-6- CDMA2000 -A мобильные сети [ 28 ] 0x27 0x39 0x33 0x33 странный
CRC-6- CDMA2000 -B мобильные сети [ 28 ] 0x07 0x38 0x31 0x23 даже
CRC-6-DARC Радиоканал данных [ 29 ] 0x19 0x26 0x0D 0x2C даже
CRC-6- GSM мобильные сети [ 25 ] 0x2F 0x3D 0x3B 0x37 даже да [ 30 ] 1 1 25 25
CRC-6-МСЭ ИТ-Т G.704 , с. 3 0x03 0x30 0x21 0x21 странный
КПР-7 телекоммуникационные системы, ITU-T G.707 , ITU-T G.832 , MMC , SD 0x09 0x48 0x11 0x44 странный
КПР-7-МВБ Сеть связи поездов , IEC 60870-5 [ 31 ] 0x65 0x53 0x27 0x72 странный
КПР-8 ДВБ-С2 [ 32 ] 0xD5 0xAB 0x57 0xEA [ 13 ] даже нет [ 33 ] 2 2 85 85
CRC-8- АВТОСАР автомобильная интеграция, [ 34 ] Открытая безопасность [ 35 ] 0x2F 0xF4 0xE9 0x97 [ 13 ] даже да [ 33 ] 3 3 119 119
CRC-8- Bluetooth беспроводная связь [ 36 ] 0xA7 0xE5 0xCB 0xD3 даже
CRC-8- МККТТ МСЭ-Т I.432.1 (02/99) ; ATM HEC , ISDN HEC и разграничение ячеек, SMBus PEC 0x07 0xE0 0xC1 0x83 даже
CRC-8- Даллас / Максим 1-проводная шина [ 37 ] 0x31 0x8C 0x19 0x98 даже
CRC-8-DARC Радиоканал данных [ 29 ] 0x39 0x9C 0x39 0x9C странный
CRC-8- GSM -B мобильные сети [ 25 ] 0x49 0x92 0x25 0xA4 даже
CRC-8- SAE J1850 АЕС3 ; ОБД 0x1D 0xB8 0x71 0x8E странный
CRC-8- WCDMA мобильные сети [ 28 ] [ 38 ] 0x9B 0xD9 0xB3 0xCD [ 13 ] даже
КПР-10 банкоматы; ИТ-Т I.610 0x233 0x331 0x263 0x319 даже
CRC-10- CDMA2000 мобильные сети [ 28 ] 0x3D9 0x26F 0x0DF 0x3EC даже
CRC-10- GSM мобильные сети [ 25 ] 0x175 0x2BA 0x175 0x2BA странный
КПР-11 ФлексРэй [ 39 ] 0x385 0x50E 0x21D 0x5C2 даже
КПР-12 телекоммуникационные системы [ 40 ] [ 41 ] 0x80F 0xF01 0xE03 0xC07 [ 13 ] даже
CRC-12- CDMA2000 мобильные сети [ 28 ] 0xF13 0xC8F 0x91F 0xF89 даже
CRC-12- GSM мобильные сети [ 25 ] 0xD31 0x8CB 0x197 0xE98 странный
CRC-13-ББК Сигнал времени, Радиотелепереключатель [ 42 ] [ 43 ] 0x1CF5 0x15E7 0x0BCF 0x1E7A даже
CRC-14-DARC Радиоканал данных [ 29 ] 0x0805 0x2804 0x1009 0x2402 даже
CRC-14- GSM мобильные сети [ 25 ] 0x202D 0x2D01 0x1A03 0x3016 даже
CRC-15- МОЖЕТ 0xC599 [ 44 ] [ 45 ] 0x4CD1 0x19A3 0x62CC даже
CRC-15- MPT1327 [ 46 ] 0x6815 0x540B 0x2817 0x740A странный
CRC-16-Чакраварти Оптимально для полезной нагрузки размером менее 64 бит. [ 31 ] 0x2F15 0xA8F4 0x51E9 0x978A странный
CRC-16- АРИНК ACARS Приложения [ 47 ] 0xA02B 0xD405 0xA80B 0xD015 странный
CRC-16-CCITT X.25 , V.41 , HDLC FCS , XMODEM , Bluetooth , PACTOR , SD , DigRF и многие другие; известный как CRC-CCITT 0x1021 0x8408 0x811 0x8810 [ 13 ] даже
CRC-16- CDMA2000 мобильные сети [ 28 ] 0xC867 0xE613 0xCC27 0xE433 странный
CRC-16- DECT беспроводные телефоны [ 48 ] 0x0589 0x91A0 0x2341 0x82C4 даже
CRC-16- T10 - ДИФ SCSI- ДИФ 0x8BB7 [ 49 ] 0xEDD1 0xDBA3 0xC5DB странный
CRC-16- ДНП ДНП, МЭК 870 , М-шина 0x3D65 0xA6BC 0x4D79 0x9EB2 даже
CRC-16- IBM Bisync , Modbus , USB , ANSI X3.28 , SIA DC-07 и многие другие; также известный как CRC-16 и CRC-16-ANSI 0x8005 0xA001 0x4003 0xC002 даже
CRC-16- OpenSafety -A полевая шина безопасности [ 35 ] 0x5935 0xAC9A 0x5935 0xAC9A [ 13 ] странный
CRC-16- OpenSafety -B полевая шина безопасности [ 35 ] 0x755B 0xDAAE 0xB55D 0xBAAD [ 13 ] странный
CRC-16- Профибус сети полевых шин [ 50 ] 0x1DCF 0xF3B8 0xE771 0x8EE7 странный
Флетчер-16 Используется в контрольных суммах Adler-32 A и B. Часто путают с CRC, но на самом деле это контрольная сумма; увидеть контрольную сумму Флетчера
CRC-17-КАН CAN ФД [ 51 ] 0x1685B 0x1B42D 0x1685B 0x1B42D даже
CRC-21-КАН CAN ФД [ 51 ] 0x102899 0x132281 0x064503 0x18144C даже
КПР-24 ФлексРэй [ 39 ] 0x5D6DCB 0xD3B6BA 0xA76D75 0xAEB6E5 даже
CRC-24- Радикс-64 OpenPGP , RTCM 104v3 0x864CFB 0xDF3261 0xBE64C3 0xC3267D даже
CRC-24- WCDMA Используется в ОСРВ OS-9 . Остаток = 0x800FE3. [ 52 ] 0x800063 0xC60001 0x8C0003 0xC00031 даже да [ 53 ] 4 4 8388583 8388583
КПР-30 CDMA 0x2030B9C7 0x38E74301 0x31CE8603 0x30185CE3 даже
КПР-32 ISO 3309 ( HDLC ), ANSI X3.66 ( ADCCP ), FIPS PUB 71, FED-STD-1003, ITU-T V.42 , ISO/IEC/IEEE 802-3 ( Ethernet ), SATA , MPEG-2 , PKZIP , Gzip , Bzip2 , POSIX csum , [ 54 ] PNG , [ 55 ] ЗМОДЕМ и многие другие. 0x04C11DB7 0xEDB88320 0xDB710641 0x82608EDB [ 16 ] странный да 10 12 21 34 57 91 171 268 2974 91607 4294967263
CRC-32C (Кастаньоли) iSCSI , SCTP , полезная нагрузка G.hn , SSE4.2 , Btrfs , ext4 , Ceph 0x1EDC6F41 0x82F63B78 0x05EC76F1 0x8F6E37A0 [ 16 ] даже да 6 8 20 47 177 5243 2147483615
КПР-32К (Купман {1,3,28}) Отличная длина кадра Ethernet, низкая производительность при работе с длинными файлами [ нужна ссылка ] 0x741B8CD7 0xEB31D82E 0xD663B05D 0xBA0DC66B [ 16 ] даже нет 2 4 16 18 152 16360 114663
КПР-32К 2 (Купман {1,1,30}) Отличная длина кадра Ethernet, низкая производительность при работе с длинными файлами [ нужна ссылка ] 0x32583499 0x992C1A4C 0x32583499 0x992C1A4C [ 16 ] даже нет 3 16 26 134 32738 65506
CRC-32Q авиация; AIXM [ 56 ] 0x814141AB 0xD5828281 0xAB050503 0xC0A0A0D5 даже
Адлер-32 Часто путают с CRC, но на самом деле это контрольная сумма; см. Адлер-32
CRC-40- GSM GSM-канал управления [ 57 ] [ 58 ] [ 59 ] 0x0004820009 0x9000412000 0x2000824001 0x8002410004 даже
CRC-64- ECMA ЭКМА-182 с. 51, XZ Утилиты 0x42F0E1EBA9EA3693 0xC96C5795D7870F42 0x92D8AF2BAF0E1E85 0xA17870F5D4F51B49 даже
CRC-64-ISO ISO 3309 ( HDLC ), Swiss-Prot / TrEMBL ; считается слабым для хеширования [ 60 ] 0x000000000000001B 0xD800000000000000 0xB000000000000001 0x800000000000000D странный

Реализации

[ редактировать ]

CRC-каталоги

[ редактировать ]

См. также

[ редактировать ]
  1. ^ Пундир, Мина; Сандху, Джасминдер Каур (2021). «Систематический обзор качества обслуживания в беспроводных сенсорных сетях с использованием машинного обучения: последние тенденции и видение будущего». Журнал сетевых и компьютерных приложений . 188 : 103084. doi : 10.1016/j.jnca.2021.103084 . Механизм проверки циклическим избыточным кодом (CRC) используется для защиты данных и обеспечения защиты целостности от битов ошибок при передаче данных от отправителя к получателю.
  2. ^ Шиллер, Франк; Мэттес, Тина (2007). «Анализ CRC-полиномов для критически важной для безопасности связи с помощью детерминированных и стохастических автоматов». Обнаружение неисправностей, надзор и безопасность технологических процессов 2006 . Эльзевир. п. 944–949. дои : 10.1016/b978-008044485-7/50159-7 . ISBN  978-0-08-044485-7 . Контроль циклическим избыточным кодом (CRC) — эффективный метод обеспечения низкой вероятности необнаружения ошибок при передаче данных с использованием контрольной суммы в результате полиномиального деления.
  3. ^ «Алгоритм проверки ошибок циклическим избыточным кодом» . drdobbs.com . Архивировано из оригинала 20 июля 2017 года . Проверено 28 июня 2017 г.
  4. ^ Петерсон, WW; Браун, Д.Т. (январь 1961 г.). «Циклические коды для обнаружения ошибок». Труды ИРЭ . 49 (1): 228–235. дои : 10.1109/JRPROC.1961.287814 . S2CID   51666741 .
  5. ^ Jump up to: а б Эрген, Мустафа (21 января 2008 г.). «2.3.3 Кодирование обнаружения ошибок». Мобильный широкополосный доступ . Спрингер . стр. 29–30. дои : 10.1007/978-0-387-68192-4_2 . ISBN  978-0-387-68192-4 .
  6. ^ Риттер, Терри (февраль 1986 г.). «Великая тайна ЦРК» . Журнал доктора Добба . 11 (2): 26–34, 76–83. Архивировано из оригинала 16 апреля 2009 года . Проверено 21 мая 2009 г.
  7. ^ Стигге, Мартин; Плёц, Хенрик; Мюллер, Вольф; Редлих, Йенс-Петер (май 2006 г.). «Реверс CRC – теория и практика» (PDF) . Университет Гумбольдта в Берлине. п. 17. САР-ПР-2006-05. Архивировано из оригинала (PDF) 19 июля 2011 года . Проверено 4 февраля 2011 г. Представленные методы предлагают очень простой и эффективный способ изменить ваши данные так, чтобы они вычислялись по CRC, который вы хотите или, по крайней мере, знаете заранее.
  8. ^ «Разработка алгоритма. Почему CRC называют линейным?» . Обмен стеками криптографии . Проверено 5 мая 2019 г.
  9. ^ Кэм-Вингет, Нэнси; Хаусли, Расс; Вагнер, Дэвид; Уокер, Джесси (май 2003 г.). «Недостатки безопасности в протоколах передачи данных 802.11» (PDF) . Коммуникации АКМ . 46 (5): 35–39. CiteSeerX   10.1.1.14.8775 . дои : 10.1145/769800.769823 . S2CID   3132937 . Архивировано (PDF) из оригинала 26 мая 2013 года . Проверено 1 ноября 2017 г.
  10. ^ Jump up to: а б с Уильямс, Росс Н. (24 сентября 1996 г.). «Безболезненное руководство по алгоритмам обнаружения ошибок CRC V3.0» . Архивировано из оригинала 2 апреля 2018 года . Проверено 23 мая 2019 г.
  11. ^ Пресс, WH; Теукольский, С.А.; Феттерлинг, WT; Фланнери, BP (2007). «Раздел 22.4 Циклическая избыточность и другие контрольные суммы» . Численные рецепты: искусство научных вычислений (3-е изд.). Издательство Кембриджского университета. ISBN  978-0-521-88068-8 . Архивировано из оригинала 11 августа 2011 года . Проверено 18 августа 2011 г.
  12. ^ Юинг, Грегори К. (март 2010 г.). «Реверс-инжиниринг алгоритма CRC» . Крайстчерч: Кентерберийский университет. Архивировано из оригинала 7 августа 2011 года . Проверено 26 июля 2011 г.
  13. ^ Jump up to: а б с д и ж г час я дж Купман, Филип; Чакраварти, Тридиб (июнь 2004 г.). «Выбор полинома циклического избыточного кода (CRC) для встроенных сетей». Международная конференция по надежным системам и сетям, 2004 г. (PDF) . стр. 145–154. CiteSeerX   10.1.1.648.9080 . дои : 10.1109/DSN.2004.1311885 . ISBN  978-0-7695-2052-0 . S2CID   793862 . Архивировано (PDF) из оригинала 11 сентября 2011 года . Проверено 14 января 2011 г.
  14. ^ Jump up to: а б Кук, Грег (15 августа 2020 г.). «Каталог параметризованных алгоритмов CRC» . Архивировано из оригинала 1 августа 2020 года . Проверено 18 сентября 2020 г.
  15. ^ Кастаньоли, Г.; Бройер, С.; Херрманн, М. (июнь 1993 г.). «Оптимизация циклических кодов проверки избыточностью с 24 и 32 битами четности». Транзакции IEEE по коммуникациям . 41 (6): 883–892. дои : 10.1109/26.231911 .
  16. ^ Jump up to: а б с д и ж г час Купман, Филип (июль 2002 г.). «32-битные циклические избыточные коды для интернет-приложений». Материалы Международной конференции по надежным системам и сетям (PDF) . стр. 459–468. CiteSeerX   10.1.1.11.8323 . дои : 10.1109/DSN.2002.1028931 . ISBN  978-0-7695-1597-7 . S2CID   14775606 . Архивировано (PDF) из оригинала 16 сентября 2012 года . Проверено 14 января 2011 г.
  17. ^ Купман, Филип (21 января 2016 г.). «Лучшие полиномы CRC» . Университет Карнеги-Меллон. Архивировано из оригинала 20 января 2016 года . Проверено 26 января 2016 г. .
  18. ^ Брайер, Кеннет (август 1975 г.). Оценка полиномов 32 градусов при обнаружении ошибок в шаблонах ошибок SATIN IV Autovon (отчет). Национальная служба технической информации . АДА014825. Архивировано из оригинала 31 декабря 2021 года . Проверено 31 декабря 2021 г.
  19. ^ Хаммонд, Джозеф Л. младший; Браун, Джеймс Э.; Лю, Шьян-Шян (1975). «Разработка модели ошибок передачи и модели контроля ошибок» . Технический отчет NASA Sti/Recon N. 76 (опубликовано в мае 1975 г.): 15344. Бибкод : 1975STIN...7615344H . АДА013939. Архивировано из оригинала 31 декабря 2021 года . Проверено 31 декабря 2021 г.
  20. ^ Брайер, Кеннет; Хаммонд, Джозеф Л. младший (декабрь 1975 г.). Оценка эффективности полинома обнаружения ошибок на канале AUTOVON . NTC 75: Национальная конференция по телекоммуникациям, 1–3 декабря 1975 г., Новый Орлеан, Луизиана. Том. 1. Институт инженеров электротехники и электроники. стр. 8–21–5. Бибкод : 1975ntc.....1....8B . OCLC   32688603 . 75 CH 1015-7 CSCB.
  21. ^ CRC с четной четностью обнаруживают любое нечетное количество битовых ошибок за счет меньшего расстояния Хэмминга для длинных полезных данных. Обратите внимание, что четность вычисляется по всему полиному генератора, включая подразумеваемую 1 в начале или в конце. Например, полное представление CRC-1 — это 0x3, который имеет два бита 1. Таким образом, его четность четная.
  22. ^ Jump up to: а б «32-битный зоопарк CRC» . user.ece.cmu.edu . Архивировано из оригинала 19 марта 2018 года . Проверено 5 ноября 2017 г.
  23. ^ Полезная нагрузка означает длину без учета поля CRC. Расстояние Хэмминга d означает, что d можно обнаружить ⌊( d - 1)/2⌋ битовых ошибок. - 1 битовых ошибок и исправить
  24. ^ всегда достигается для сообщений произвольной длины
  25. ^ Jump up to: а б с д и ж ETSI TS 100 909 (PDF) . Версия 8.9.0. София Антиполис, Франция: Европейский институт телекоммуникационных стандартов. Январь 2005 г. Архивировано (PDF) из оригинала 17 апреля 2018 г. Проверено 21 октября 2016 г.
  26. ^ «3-битный зоопарк CRC» . user.ece.cmu.edu . Архивировано из оригинала 7 апреля 2018 года . Проверено 19 января 2018 г.
  27. ^ Протокол UHF RFID класса 1 поколения 2 (PDF) . 1.2.0. EPCglobal . 23 октября 2008 г. с. 35. Архивировано (PDF) из оригинала 19 марта 2012 года . Проверено 4 июля 2012 г. (Таблица 6.12)
  28. ^ Jump up to: а б с д и ж Стандарт физического уровня для систем с расширенным спектром cdma2000 (PDF) . Редакция D версии 2.0. Проект партнерства третьего поколения 2. Октябрь 2005 г. стр. 2–89–2–92. Архивировано из оригинала (PDF) 16 ноября 2013 года . Проверено 14 октября 2013 г.
  29. ^ Jump up to: а б с «11. Стратегия исправления ошибок». ETSI EN 300 751 (PDF) . В1.2.1. София Антиполис, Франция: Европейский институт телекоммуникационных стандартов. Январь 2003 г., стр. 67–8. Архивировано (PDF) из оригинала 28 декабря 2015 года . Проверено 26 января 2016 г. .
  30. ^ «6-битный CRC-зоопарк» . user.ece.cmu.edu . Архивировано из оригинала 7 апреля 2018 года . Проверено 19 января 2018 г.
  31. ^ Jump up to: а б Чакраварти, Тридиб (декабрь 2001 г.). Производительность кодов циклической избыточности для встроенных сетей (PDF) (Диссертация). Филип Купман, советник. Университет Карнеги-Меллон. стр. 5, 18. Архивировано (PDF) из оригинала 1 января 2014 года . Проверено 8 июля 2013 г.
  32. ^ «5.1.4 Кодер CRC-8 (только для пакетированных потоков)». EN 302 307 (PDF) . В1.3.1. София Антиполис, Франция: Европейский институт телекоммуникационных стандартов. Март 2013. с. 17. Архивировано (PDF) из оригинала 30 августа 2017 года . Проверено 29 июля 2016 г.
  33. ^ Jump up to: а б «8-битный зоопарк CRC» . user.ece.cmu.edu . Архивировано из оригинала 7 апреля 2018 года . Проверено 19 января 2018 г.
  34. ^ «7.2.1.2 Расчет 8-битного полиномиального CRC 0x2F». Спецификация процедур CRC (PDF) . 4.2.2. Мюнхен: АВТОСАР. 22 июля 2015 г. с. 24. Архивировано из оригинала (PDF) 24 июля 2016 года . Проверено 24 июля 2016 г.
  35. ^ Jump up to: а б с «5.1.1.8 Поле проверки циклическим избыточным кодом (CRC-8/CRC-16)». openSAFETY Спецификация профиля безопасности: Рабочий проект предложения EPSG 304 . 1.4.0. Берлин: Группа стандартизации Ethernet POWERLINK. 13 марта 2013 г. с. 42. Архивировано из оригинала 12 августа 2017 года . Проверено 22 июля 2016 г.
  36. ^ «B.7.1.1 Генерация HEC». Спецификация системы Bluetooth . Том. 2. Bluetooth-сигнал. 2 декабря 2014. С. 144–5. Архивировано из оригинала 26 марта 2015 года . Проверено 20 октября 2014 г.
  37. ^ Уитфилд, Гарри (24 апреля 2001 г.). «XFCN для расчетов циклического избыточного кода» . Архивировано из оригинала 25 мая 2005 года.
  38. ^ Ричардсон, Эндрю (17 марта 2005 г.). Справочник WCDMA . Издательство Кембриджского университета. п. 223. ИСБН  978-0-521-82815-4 .
  39. ^ Jump up to: а б Спецификация протокола FlexRay . 3.0.1. Консорциум FlexRay. Октябрь 2010. с. 114. (4.2.8 CRC заголовка (11 бит))
  40. ^ Перес, А. (1983). «Побайтовые вычисления CRC». IEEE микро . 3 (3): 40–50. дои : 10.1109/MM.1983.291120 . S2CID   206471618 .
  41. ^ Рамабадран, ТВ; Гайтонда, СС (1988). «Учебник по вычислениям CRC». IEEE микро . 8 (4): 62–75. дои : 10.1109/40.7773 . S2CID   10216862 .
  42. ^ «Декодирование длинноволновых радиоданных с использованием HC11 и MC3371» (PDF) . Свободный полупроводник. 2004. АН1597/Д. Архивировано из оригинала (PDF) 24 сентября 2015 года.
  43. ^ Эли, СР; Райт, DT (март 1982 г.). Данные LF Radio: спецификация экспериментальных передач BBC, 1982 г. (PDF) . Исследовательский отдел инженерного отдела Британской радиовещательной корпорации. п. 9. Архивировано (PDF) из оригинала 12 октября 2013 года . Проверено 11 октября 2013 г.
  44. ^ Проверка циклическим избыточным кодом (CRC): Техническое описание компонента PSoC Creator™ . Кипарисовый полупроводник. 20 февраля 2013 г. с. 4. Архивировано из оригинала 2 февраля 2016 года . Проверено 26 января 2016 г. .
  45. ^ «Циклический избыточный код (CRC) в кадрах CAN» . CAN в автоматизации . Архивировано из оригинала 1 февраля 2016 года . Проверено 26 января 2016 г. .
  46. ^ «3.2.3 Кодирование и проверка ошибок». Стандарт сигнализации для транкинговых частных наземных мобильных радиосистем (MPT 1327) (PDF) (3-е изд.). Офком . Июнь 1997. с. 3. Архивировано (PDF) из оригинала 14 июля 2012 г. Проверено 16 июля 2012 г.
  47. ^ Реманн, Альберт; Местре, Хосе Д. (февраль 1995 г.). «Отчет о предварительных испытаниях системы воздушно-земной линии передачи данных VHF для авиакомпании (ACARS)» (PDF) . Технический центр Федерального управления гражданской авиации. п. 5. Архивировано из оригинала (PDF) 2 августа 2012 года . Проверено 7 июля 2012 г.
  48. ^ «6.2.5 Контроль ошибок». ETSI EN 300 175-3 (PDF) . В2.5.1. София Антиполис, Франция: Европейский институт телекоммуникационных стандартов. Август 2013. стр. 99, 101. Архивировано (PDF) из оригинала 1 июля 2015 года . Проверено 26 января 2016 г. .
  49. ^ Талер, Пэт (28 августа 2003 г.). «Выбор 16-битного полинома CRC» (PDF) . ИНЦИТС Т10. Архивировано (PDF) из оригинала 28 июля 2011 года . Проверено 11 августа 2009 г.
  50. ^ «8.8.4 Контрольный октет (FCS)». Нормативные части спецификации PROFIBUS (PDF) . 1.0. Том. 9. Профибус Международный. Март 1998 г. с. 906. Архивировано из оригинала (PDF) 16 ноября 2008 года . Проверено 9 июля 2016 г.
  51. ^ Jump up to: а б CAN с гибкой спецификацией скорости передачи данных (PDF) . 1.0. Роберт Бош ГмбХ. 17 апреля 2012 г. с. 13. Архивировано из оригинала (PDF) 22 августа 2013 г. (3.2.1 КАДР ДАННЫХ).
  52. ^ «Руководство программиста операционной системы OS-9» . сайт roug.org . Архивировано из оригинала 17 июля 2018 года . Проверено 17 июля 2018 г.
  53. ^ Купман, Филип П. (20 мая 2018 г.). «24-битный зоопарк CRC» . user.ece.cmu.edu . Архивировано из оригинала 7 апреля 2018 года . Проверено 19 января 2018 г.
  54. ^ "ксум" . pubs.opengroup.org . Архивировано из оригинала 18 июля 2018 года . Проверено 27 июня 2017 г.
  55. ^ Бутелл, Томас; Рандерс-Персон, Гленн; и др. (14 июля 1998 г.). «Спецификация PNG (переносимая сетевая графика), версия 1.2» . Libpng.org. Архивировано из оригинала 3 сентября 2011 года . Проверено 3 февраля 2011 г.
  56. ^ Учебное пособие по AIXM (PDF) . 4.5. Европейская организация по безопасности аэронавигации . 20 марта 2006 г. Архивировано (PDF) из оригинала 20 ноября 2018 г. . Проверено 3 февраля 2019 г.
  57. ^ ETSI TS 100 909. Архивировано 17 апреля 2018 г. на Wayback Machine , версия 8.9.0 (январь 2005 г.), раздел 4.1.2 a.
  58. ^ Гаммель, Берндт М. (31 октября 2005 г.). Документация Matpack: Крипто — Коды . Matpack.de. Архивировано из оригинала 25 августа 2013 года . Проверено 21 апреля 2013 г. (Примечание: MpCRC.html включен в исходный код сжатого программного обеспечения Matpack в /html/LibDoc/Crypto)
  59. ^ Джеремия, Патрик (апрель 1999 г.). «Вычисление проверки циклическим избыточным кодом: реализация с использованием TMS320C54x» (PDF) . Техасские инструменты. п. 5. Архивировано (PDF) из оригинала 14 июня 2012 года . Проверено 4 июля 2012 г.
  60. ^ Джонс, Дэвид Т. «Улучшенная 64-битная проверка циклическим избыточным кодом для белковых последовательностей» (PDF) . Университетский колледж Лондона. Архивировано (PDF) из оригинала 7 июня 2011 года . Проверено 15 декабря 2009 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2be44f741e175b95b1bb084cf614ddf1__1714813560
URL1:https://arc.ask3.ru/arc/aa/2b/f1/2be44f741e175b95b1bb084cf614ddf1.html
Заголовок, (Title) документа по адресу, URL1:
Cyclic redundancy check - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)