Вычисление 32-разрядного CRC

августа 8, 2008

Контрольный код циклической избыточности (Cyclic Redundancy Checksum,CRC) — прекрасно славный путь получить «сигнатуру» файла или произвольного массива байтов. CRC отличается тем свойством, что возможность получения одинакового кода для различных входных данных равна 1 /2**N, где N- число битов результата (наиболее часто 32).
Вычислить его разрешает библиотека zlib, написанная Уэно Кацухиро (Ueno Каtsuhiro). Метод сгс32 вычисляет CRC для строки, переданной в качестве размера.

require ‘zlib’
include Zlib
crc = crc32(”Hello”) # 4157704578
crc = crc32(” world!”,crc) # 461707669
crc = crc32(”Hello world!”) # 461707669 (то же, что и выше)

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

Связанные записи

Комментировать

Вы должны войти для того, чтобы оставить комментарий.