Class: Omnizip::Formats::Rar::Rar5::CRC32
- Inherits:
-
Object
- Object
- Omnizip::Formats::Rar::Rar5::CRC32
- Defined in:
- lib/omnizip/formats/rar/rar5/crc32.rb
Overview
CRC32 calculation for RAR5 format
Constant Summary collapse
- POLYNOMIAL =
0xEDB88320
Class Method Summary collapse
-
.calculate(data) ⇒ Integer
Calculate CRC32 for data.
-
.generate_table ⇒ Object
Generate CRC32 lookup table.
Class Method Details
.calculate(data) ⇒ Integer
Calculate CRC32 for data
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/omnizip/formats/rar/rar5/crc32.rb', line 25 def self.calculate(data) table = generate_table crc = 0xFFFFFFFF data.bytes.each do |byte| crc = (crc >> 8) ^ table[(crc ^ byte) & 0xFF] end crc ^ 0xFFFFFFFF end |
.generate_table ⇒ Object
Generate CRC32 lookup table
12 13 14 15 16 17 18 19 20 |
# File 'lib/omnizip/formats/rar/rar5/crc32.rb', line 12 def self.generate_table @generate_table ||= (0..255).map do |i| crc = i 8.times do crc = (crc >> 1) ^ ((crc & 1) * POLYNOMIAL) end crc end end |