Content-type: text/html
Manpage of TclDESjr
TclDESjr
Section: Tcl DES Library (n)
Updated: OCTOBER 2004
Index
Return to Main Contents
NAME
TclDESjr - Tcl-based Data Encryption Standard library
SYNOPSIS
package require tclDESjr ?0.8?
::des::createKeys key
::des::keyset oper value
::des::block keyset message encrypt [mode [iv]]
::des::stream keyset message encrypt mode iv [kbits]]
::des::encrypt keyset plaintext [mode [iv [kbits]]]
::des::decrypt keyset ciphertext [mode [iv [kbits]]]
DESCRIPTION
TclDESjr is a pure-Tcl implementation of the NIST Data Encryption
Standard (DES). The package can perform encryption and decryption using
the standard DES algorithm. All four DES modes are supported: Electronic
Code Block (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB),
and Output Feedback (OFB).
This source code is being made publicly available and has been registered
with the U.S. Dept. of Commerce Bureau of Industry and Security under
export license exception TSU (Technology and Software Unrestricted) for
export out of the United States. TclDESjr is licensed under the same
Open Source license as Tcl (BSD). Details can be found in the TclDESjr
source code.
The TclDESjr commands are contained within the namespace ::des
so that working variables shared between the commands are isolated from the
global namespace.
COMMANDS
- ::des::createKeys key
-
The ::des::createKeys command generates the 16 subkeys used by the
DES algorithm. The input key must be a binary string of 8 bytes in
length. An error is generated if the key submitted if one of four DES
weak keys. The output is a list of subkeys 16 elements in length. This
command is used internally by the ::des::keyset command.
- ::des::keyset oper value
-
The ::des::keyset command creates or destroys a keyset created
from a 64-bit DES key. The input oper is the operation to be
performed. This will be either "create" (make a new keyset) or
"destroy" (delete an existing keyset). An error is generated if
oper is not "create" or "destroy". The meaning of the argument
value depends of the operation performed. If the argument
oper is "create", then value is the 64-bit (8 bytes) DES key.
(Note: The lsb of each byte is ignored; odd parity is not required).
The ::des::createKeys command is called to generate the keyset. If
the argument oper is "destroy", then value is a handle to a
keyset that was created previously. If the argument oper is
"create", then the output is a handle to the keyset stored in the des
namespace. If the argument oper is "destroy", then nothing is
returned.
- ::des::block keyset message encrypt [mode [iv]]
-
The ::des::des command executes the DES algorithm for the block
mode algorithms ECB and CBC. The input keyset must be a valid
handle to a DES key set created through the ::des::keyset procedure.
Message is a binary string that will either be encrypted or
decrypted depending on the value of the encrypt flag. If
encryption is being performed, the length of message is extended
to an integral multiple of eight bytes. If decryption is being performed,
the length of message must be an integral multiple of eight bytes.
Encryption occurs if the encrypt flag in 1 (the default) and
decryption occurs if the flag is 0. The mode flag determines the
DES operation mode. The modes available are: 0 - Electronic Code Block
(ECB, the default), 1 - Cipher Block Chaining (CBC). If the mode selected
is CBC, the name of a variable, iv, containing a binary initialization
vector string must be supplied. The binary string must be 8 bytes in length.
The output is a binary string of the encrypted or decrypted form of
message. The length of the output string is always an integral multiple
of eight. The variable, iv, contains the feed-forward cipher block for
the last cycle of the algorithm.
- ::des::stream keyset message encrypt mode iv [kbits]
-
The ::des::des command executes the DES algorithm for the stream
mode algorithms CFB and OFB. The input keyset must be a valid
handle to a DES key set created through the ::des::keyset procedure.
Message is a binary string
that will either be encrypted or decrypted depending on the value of the
encrypt flag. Encryption occurs if the encrypt flag in 1 and
decryption occurs if the flag is 0. The mode flag determines the
DES operation mode. The modes available are: 0 - Output Feedback and 1 -
Cipher Feedback. iv is initialization vector string used to initialize
the algorithm. The binary string must be 8 bytes in length. The kbits
parameter states the number of bits per data unit processed by the algorithm
(the default is 64). The output is a binary string of the encrypted or
decrypted form of message. The length of the output string will be
equal to the length of the input string. The variable, iv, contains
the feedback block for the last cycle of the algorithm. Note: A copy
of the initial value of the initialization vector used for encryption must be
retained in order to decrypt the message later. Subsequent calls with new
message fragments should use the same initialization vector variable used in
the first call.
- ::des::encrypt keyset plaintext [mode [iv [kbits]]]
-
The ::des::encrypt command is an encryption-only wrapper for the
::des::block and ::des::stream commands. The inputs keyset,
iv, and kbits, are defined as described in the ::des::block
and ::des::stream commands. The input plaintext is a binary string
to be encrypted. If necessary, the length of plaintext is extended to an
integral multiple of eight bytes. The value of mode can be ecb (the
default), cbc, ofb, and cfb. The output is a binary string of the encrypted
form of plaintext.
- ::des::decrypt keyset ciphertext [mode [iv [kbits]]]
-
The ::des::decrypt command is a decryption-only wrapper for the
::des::block and ::des::stream commands. The inputs keyset,
iv, and kbits, are defined as described in the ::des::block
and ::des::stream commands. The input ciphertext is a binary
string to be decrypted. The length of ciphertext must be an integral
multiple of eight bytes when ECB and CBC modes are used. The value of
mode can be ecb (the default), cbc, ofb, and cfb. The output is a binary
string of the decrypted form of ciphertext.
- Stream Mode Message Size Restriction
-
Due to the nature of the OFB and CFB modes of DES, the message/cipher data
is considered to be a stream of bits, not blocks of bytes. Since data is
normally packed into 8-bit bytes, message fragments processed by ::des::stream
must be an integral number of bytes. The value of kbits forces a
message fragment to also satisfy the requirement that its length be an integral
multiple of kbits in length. The table below lists the minimum size of a
message for a given size of kbits:
kbits size message size kbits size message size
1 bit 1 byte 33 bits 165 bytes
2 bits 1 byte 34 bits 170 bytes
3 bits 3 bytes 35 bits 175 bytes
4 bits 1 byte 36 bits 180 bytes
5 bits 5 bytes 37 bits 185 bytes
6 bits 6 bytes 38 bits 190 bytes
7 bits 7 bytes 39 bits 195 bytes
8 bits 1 byte 40 bits 5 bytes
9 bits 18 bytes 41 bits 246 bytes
10 bits 20 bytes 42 bits 252 bytes
11 bits 22 bytes 43 bits 258 bytes
12 bits 24 bytes 44 bits 264 bytes
13 bits 26 bytes 45 bits 270 bytes
14 bits 28 bytes 46 bits 276 bytes
15 bits 30 bytes 47 bits 282 bytes
16 bits 2 bytes 48 bits 6 bytes
17 bits 51 bytes 49 bits 343 bytes
18 bits 54 bytes 50 bits 350 bytes
19 bits 57 bytes 51 bits 357 bytes
20 bits 60 bytes 52 bits 364 bytes
21 bits 63 bytes 53 bits 371 bytes
22 bits 66 bytes 54 bits 378 bytes
23 bits 69 bytes 55 bits 385 bytes
24 bits 3 bytes 56 bits 7 bytes
25 bits 100 bytes 57 bits 456 bytes
26 bits 104 bytes 58 bits 464 bytes
27 bits 108 bytes 59 bits 472 bytes
28 bits 112 bytes 60 bits 480 bytes
29 bits 116 bytes 61 bits 488 bytes
30 bits 120 bytes 62 bits 496 bytes
31 bits 124 bytes 63 bits 504 bytes
32 bits 4 bytes 64 bits 8 bytes
Note that the actual message length can be an integral multiple of the
corresponding message lengths stated above.
AUTHOR
Mac A. Cody <maccody at comcast dot net>
SEE ALSO
binary(n)
KEYWORDS
DES, Tcl, package
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- COMMANDS
-
- AUTHOR
-
- SEE ALSO
-
- KEYWORDS
-
This document was created by
man2html,
using the manual pages.
Time: 03:03:55 GMT, October 26, 2004