|
ActiveTcl User Guide |
|
[ Main table Of Contents | Tcllib Table Of Contents | Tcllib Index ]
rc4(n) 1.1.0 "RC4 Stream Cipher"
rc4 - Impementation of the RC4 stream cipher
TABLE OF
CONTENTS
SYNOPSIS
DESCRIPTION
COMMANDS
PROGRAMMING INTERFACE
EXAMPLES
AUTHORS
SEE ALSO
KEYWORDS
COPYRIGHT
package require Tcl 8.2
package require rc4 ?1.1.0?
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.
- ::rc4::rc4 ?-hex? -key keyvalue ?-command lst? ?-out channel? [ -in channel | -infile filename |
string ]
- Perform the RC4 algorithm on either the data provided by the
argument or on the data read from the -in
channel. If an -out channel is given then the
result will be written to this channel. Giving the -hex option will return a hexadecimal encoded version of
the result if not using an -out channel.
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.
- ::rc4::RC4Init keydata
- Initialize a new RC4 key. The keydata is any
amount of binary data and is used to initialize the cipher internal
state.
- ::rc4::RC4 Key data
- Encrypt or decrypt the input data using the key obtained by
calling RC4Init.
- ::rc4::RC4Final Key
- This should be called to clean up resources associated with Key. Once this function has been called the key is
destroyed.
| |
% 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
aes(n) , blowfish(n) , des(n)
arcfour, , data integrity , encryption , rc4 , security , stream cipher
Copyright © 2003, Pat Thoyts
<patthoyts@users.sourceforge.net>