Added rc4

cvs
Doug Coleman 2006-01-30 08:25:03 +00:00
parent 4daa68df8b
commit b0a96bfc77
2 changed files with 44 additions and 0 deletions

View File

@ -10,4 +10,5 @@ USING: kernel parser sequences words compiler ;
"md5"
"sha1"
"rsa"
"rc4"
} [ "/contrib/crypto/" swap ".factor" append3 run-resource ] each

43
contrib/crypto/rc4.factor Normal file
View File

@ -0,0 +1,43 @@
USING: kernel math sequences namespaces math-contrib ;
IN: crypto-internals
! http://en.wikipedia.org/wiki/RC4_%28cipher%29
SYMBOL: i
SYMBOL: j
SYMBOL: s
SYMBOL: key
SYMBOL: l
: swap-ij ( i j seq -- )
[
s set j set i set
i get s get nth j get s get nth i get s get set-nth j get s get set-nth
] with-scope ;
! key scheduling algorithm, initialize s
: ksa ( -- )
256 [ ] map s set
0 j set
256 [
dup s get nth j get + over l get mod key get nth + 255 bitand j set
dup j get s get swap-ij
] repeat ;
: generate ( -- n )
i get 1+ 255 bitand i set
j get i get s get nth + 255 bitand j set
i get j get s get swap-ij
i get s get nth j get s get nth + 255 bitand s get nth ;
IN: crypto
: rc4 ( key -- )
[ key set ] keep
length l set
ksa
0 i set
0 j set ;