]> gitweb.factorcode.org Git - factor.git/blob - libs/crypto/crc32.factor
more sql changes
[factor.git] / libs / crypto / crc32.factor
1 USING: kernel math sequences namespaces ;
2
3 IN: crypto-internals
4 : crc32-polynomial HEX: edb88320 ; inline
5
6 : crc32-init ( -- table )
7     256 [
8         8 [
9             dup 1 bitand zero? >r -1 shift r> [ crc32-polynomial bitxor ] unless
10         ] times
11     ] map ;
12
13 SYMBOL: crc32-table
14 crc32-init crc32-table set-global
15
16 : calc-crc32 ( ch crc -- crc )
17     dupd bitxor HEX: ff bitand crc32-table get nth swap -8 shift bitxor ;
18
19 IN: crypto
20 : >crc32 ( seq -- n )
21    >r HEX: ffffffff dup r> [ calc-crc32 ] each bitxor ;
22