rc4(n) | RC4 Stream Cipher | rc4(n) |
rc4 - Implementation of the RC4 stream cipher
package require Tcl 8.2
package require rc4 ?1.1.0?
::rc4::rc4 ?-hex? -key keyvalue ?-command lst? ?-out channel? [ -in channel | -infile filename | string ]
::rc4::RC4Init keydata
::rc4::RC4 Key data
::rc4::RC4Final Key
This package is an implementation in Tcl of the RC4 stream cipher developed by Ron Rivest of RSA Data Security Inc. The cipher was a trade secret of RSA but was reverse-engineered and published to the internet in 1994. It is used in a number of network protocols for securing communications. To evade trademark restrictions this cipher is sometimes known as ARCFOUR.
The data to be processes can be specified either as a string argument to the rc4 command, or as a filename or a pre-opened channel. If the -infile argument is given then the file is opened, the data read and processed and the file is closed. If the -in argument is given then data is read from the channel until the end of file. The channel is not closed. If the -out argument is given then the processing result is written to this channel.
If -command is provided then the rc4 command does not return anything. Instead the command provided is called with the rc4 result data appended as the final parameter. This is most useful when reading from Tcl channels as a fileevent is setup on the channel and the data processed in chunks
Only one of -infile, -in or string should be given.
% set keydata [binary format H* 0123456789abcdef] % rc4::rc4 -hex -key $keydata HelloWorld 3cf1ae8b7f1c670b612f % rc4::rc4 -hex -key $keydata [binary format H* 3cf1ae8b7f1c670b612f] HelloWorld
set Key [rc4::RC4Init "key data"]
append ciphertext [rc4::RC4 $Key $plaintext]
append ciphertext [rc4::RC4 $Key $additional_plaintext]
rc4::RC4Final $Key
proc ::Finish {myState data} {
DoStuffWith $myState $data
}
rc4::rc4 -in $socket -command [list ::Finish $ApplicationState]
Pat Thoyts
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category rc4 of the Tcllib SF Trackers [http://sourceforge.net/tracker/?group_id=12883]. Please also report any ideas for enhancements you may have for either package and/or documentation.
aes(n), blowfish(n), des(n)
arcfour,, data integrity, encryption, rc4, security, stream cipher
Hashes, checksums, and encryption
Copyright (c) 2003, Pat Thoyts <patthoyts@users.sourceforge.net>
1.1.0 | rc4 |