factor/contrib/crypto/crc32.factor

23 lines
516 B
Factor
Raw Normal View History

2006-02-27 20:37:36 -05:00
USING: kernel math sequences namespaces ;
IN: crypto-internals
: crc32-polynomial HEX: edb88320 ; inline
: crc32-init ( -- table )
256 [
8 [
2006-09-07 16:15:41 -04:00
dup 1 bitand zero? >r -1 shift r> [ crc32-polynomial bitxor ] unless
2006-02-27 20:37:36 -05:00
] times
] map ;
2006-09-07 16:15:41 -04:00
SYMBOL: crc32-table
crc32-init crc32-table set-global
2006-02-27 20:37:36 -05:00
2006-09-07 16:15:41 -04:00
: calc-crc32 ( ch crc -- crc )
dupd bitxor HEX: ff bitand crc32-table get nth swap -8 shift bitxor ;
2006-02-27 20:37:36 -05:00
IN: crypto
2006-09-07 16:15:41 -04:00
: >crc32 ( seq -- n )
>r HEX: ffffffff dup r> [ calc-crc32 ] each bitxor ;
2006-02-27 20:37:36 -05:00