/** * AS3 CRC32 algorithm implementation */ package org.aszip.crc { import flash.utils.ByteArray; public class CRC32 { private var crc32:int; private static var CRCTable:Array = initLookupTable(); private static function initLookupTable ():Array { var polynomial:int = 0xEDB88320; var CRC32Table:Array = new Array(256); var i:int = 256; var j:int = 8; while ( i-- ) { var crc:int = i; while ( j-- ) crc = (crc & 1) ? (crc >>> 1) ^ polynomial : (crc >>> 1); j = 8; CRC32Table [ i ] = crc; } return CRC32Table; } public function generateCRC32 ( pBytes:ByteArray ):void { var length:int = pBytes.length; var crc:int = ~crc32; for ( var i:int = 0; i < length; i++ ) crc = ( crc >>> 8 ) ^ CRCTable[ pBytes[i] ^ (crc & 0xFF) ]; crc32 = ~crc; } public function getCRC32 ():int { return crc32 & 0xFFFFFFFF; } } }