ReflectedIntCrc(String algorithm, int width, int poly, int init, int xorOut) { super(algorithm, width, init, xorOut); poly = reflect(poly); for (int i = 0; i < 256; ++i) { int crc = i; for (int j = 0; j < 8; ++j) crc = (crc & 1) != 0 ? (crc >>> 1) ^ poly : crc >>> 1; table[i] = crc; } }
@Override protected StatelessHash createCacheable(CrcParameters params, EnumSet<HashSupport> required) { final int bitWidth = params.bitWidth(); if (bitWidth > 32 || (required.contains(HashSupport.LONG_SIZED) && bitWidth >= 8)) { if (required.contains(HashSupport.INT_SIZED)) throw new UnsupportedOperationException(); if (params.reflected()) return new ReflectedLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); else return new NormalLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); } else { if (params.reflected()) return new ReflectedIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); else if (bitWidth > 8) return new NormalIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); return new NormalByteCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); } } }
@Override protected StatelessHash createCacheable(CrcParameters params, EnumSet<HashSupport> required) { final int bitWidth = params.bitWidth(); if (bitWidth > 32 || (required.contains(HashSupport.LONG_SIZED) && bitWidth >= 8)) { if (required.contains(HashSupport.INT_SIZED)) throw new UnsupportedOperationException(); if (params.reflected()) return new ReflectedLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); else return new NormalLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); } else { if (params.reflected()) return new ReflectedIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); else if (bitWidth > 8) return new NormalIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); return new NormalByteCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); } } }
ReflectedIntCrc(String algorithm, int width, int poly, int init, int xorOut) { super(algorithm, width, init, xorOut); poly = reflect(poly); for (int i = 0; i < 256; ++i) { int crc = i; for (int j = 0; j < 8; ++j) crc = (crc & 1) != 0 ? (crc >>> 1) ^ poly : crc >>> 1; table[i] = crc; } }
@Override protected StatelessHash createCacheable(CrcParameters params, EnumSet<HashSupport> required) { final int bitWidth = params.bitWidth(); if (bitWidth > 32 || (required.contains(HashSupport.LONG_SIZED) && bitWidth >= 8)) { if (required.contains(HashSupport.INT_SIZED)) throw new UnsupportedOperationException(); if (params.reflected()) return new ReflectedLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); else return new NormalLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); } else { if (params.reflected()) return new ReflectedIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); else if (bitWidth > 8) return new NormalIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); return new NormalByteCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); } } }
ReflectedIntCrc(String algorithm, int width, int poly, int init, int xorOut) { super(algorithm, width, init, xorOut); poly = reflect(poly); for (int i = 0; i < 256; ++i) { int crc = i; for (int j = 0; j < 8; ++j) crc = (crc & 1) != 0 ? (crc >>> 1) ^ poly : crc >>> 1; table[i] = crc; } }
@Override protected int initial() { return reflect(super.initial()); }
@Override protected int initial() { return reflect(super.initial()); }
@Override protected int initial() { return reflect(super.initial()); }