22 lines
539 B
Factor
22 lines
539 B
Factor
|
|
USING: kernel math sequences namespaces ;
|
||
|
|
|
||
|
|
IN: crypto-internals
|
||
|
|
: crc32-polynomial HEX: edb88320 ; inline
|
||
|
|
|
||
|
|
: crc32-init ( -- table )
|
||
|
|
256 [
|
||
|
|
8 [
|
||
|
|
dup 1 bitand 0 >
|
||
|
|
[ -1 shift crc32-polynomial bitxor ] [ -1 shift ] if
|
||
|
|
] times
|
||
|
|
] map ;
|
||
|
|
|
||
|
|
SYMBOL: crc32-table crc32-init global [ crc32-table set ] bind
|
||
|
|
|
||
|
|
: calc-crc32 ( crc ch -- crc )
|
||
|
|
over bitxor HEX: ff bitand crc32-table get nth swap -8 shift bitxor ;
|
||
|
|
|
||
|
|
IN: crypto
|
||
|
|
: >crc32 ( seq -- n ) HEX: ffffffff [ swap [ calc-crc32 ] each ] keep bitxor ;
|
||
|
|
|