rc4 -
Impementation of the RC4 stream cipher
package require Tcl 8.2
package require rc4 ? 1.0.1 ?
::rc4::rc4 ? -hex ? -key keyvalue ? -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.
-
::rc4::rc4 ? -hex ? -key keyvalue ? -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.
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
Pat Thoyts
des(n), aes(n), blowfish(n)
rc4, arcfour,, stream cipher, security, encryption, data integrity