| .TH DES 1 |
| .SH NAME |
| des - encrypt or decrypt data using Data Encryption Standard |
| .SH SYNOPSIS |
| .B des |
| ( |
| .B \-e |
| | |
| .B \-E |
| ) | ( |
| .B \-d |
| | |
| .B \-D |
| ) | ( |
| .B \-\fR[\fPcC\fR][\fPckname\fR]\fP |
| ) | |
| [ |
| .B \-b3hfs |
| ] [ |
| .B \-k |
| .I key |
| ] |
| ] [ |
| .B \-u\fR[\fIuuname\fR] |
| [ |
| .I input-file |
| [ |
| .I output-file |
| ] ] |
| .SH DESCRIPTION |
| .B des |
| encrypts and decrypts data using the |
| Data Encryption Standard algorithm. |
| One of |
| .B \-e, \-E |
| (for encrypt) or |
| .B \-d, \-D |
| (for decrypt) must be specified. |
| It is also possible to use |
| .B \-c |
| or |
| .B \-C |
| in conjunction or instead of the a encrypt/decrypt option to generate |
| a 16 character hexadecimal checksum, generated via the |
| .I des_cbc_cksum. |
| .LP |
| Two standard encryption modes are supported by the |
| .B des |
| program, Cipher Block Chaining (the default) and Electronic Code Book |
| (specified with |
| .B \-b |
| ). |
| .LP |
| The key used for the DES |
| algorithm is obtained by prompting the user unless the |
| .B `\-k |
| .I key' |
| option is given. |
| If the key is an argument to the |
| .B des |
| command, it is potentially visible to users executing |
| .BR ps (1) |
| or a derivative. To minimise this possibility, |
| .B des |
| takes care to destroy the key argument immediately upon entry. |
| If your shell keeps a history file be careful to make sure it is not |
| world readable. |
| .LP |
| Since this program attempts to maintain compatability with sunOS's |
| des(1) command, there are 2 different methods used to convert the user |
| supplied key to a des key. |
| Whenever and one or more of |
| .B \-E, \-D, \-C |
| or |
| .B \-3 |
| options are used, the key conversion procedure will not be compatible |
| with the sunOS des(1) version but will use all the user supplied |
| character to generate the des key. |
| .B des |
| command reads from standard input unless |
| .I input-file |
| is specified and writes to standard output unless |
| .I output-file |
| is given. |
| .SH OPTIONS |
| .TP |
| .B \-b |
| Select ECB |
| (eight bytes at a time) encryption mode. |
| .TP |
| .B \-3 |
| Encrypt using triple encryption. |
| By default triple cbc encryption is used but if the |
| .B \-b |
| option is used then triple ecb encryption is performed. |
| If the key is less than 8 characters long, the flag has no effect. |
| .TP |
| .B \-e |
| Encrypt data using an 8 byte key in a manner compatible with sunOS |
| des(1). |
| .TP |
| .B \-E |
| Encrypt data using a key of nearly unlimited length (1024 bytes). |
| This will product a more secure encryption. |
| .TP |
| .B \-d |
| Decrypt data that was encrypted with the \-e option. |
| .TP |
| .B \-D |
| Decrypt data that was encrypted with the \-E option. |
| .TP |
| .B \-c |
| Generate a 16 character hexadecimal cbc checksum and output this to |
| stderr. |
| If a filename was specified after the |
| .B \-c |
| option, the checksum is output to that file. |
| The checksum is generated using a key generated in a sunOS compatible |
| manner. |
| .TP |
| .B \-C |
| A cbc checksum is generated in the same manner as described for the |
| .B \-c |
| option but the DES key is generated in the same manner as used for the |
| .B \-E |
| and |
| .B \-D |
| options |
| .TP |
| .B \-f |
| Does nothing - allowed for compatibility with sunOS des(1) command. |
| .TP |
| .B \-s |
| Does nothing - allowed for compatibility with sunOS des(1) command. |
| .TP |
| .B "\-k \fIkey\fP" |
| Use the encryption |
| .I key |
| specified. |
| .TP |
| .B "\-h" |
| The |
| .I key |
| is assumed to be a 16 character hexadecimal number. |
| If the |
| .B "\-3" |
| option is used the key is assumed to be a 32 character hexadecimal |
| number. |
| .TP |
| .B \-u |
| This flag is used to read and write uuencoded files. If decrypting, |
| the input file is assumed to contain uuencoded, DES encrypted data. |
| If encrypting, the characters following the -u are used as the name of |
| the uuencoded file to embed in the begin line of the uuencoded |
| output. If there is no name specified after the -u, the name text.des |
| will be embedded in the header. |
| .SH SEE ALSO |
| .B ps (1) |
| .B des_crypt(3) |
| .SH BUGS |
| .LP |
| The problem with using the |
| .B -e |
| option is the short key length. |
| It would be better to use a real 56-bit key rather than an |
| ASCII-based 56-bit pattern. Knowing that the key was derived from ASCII |
| radically reduces the time necessary for a brute-force cryptographic attack. |
| My attempt to remove this problem is to add an alternative text-key to |
| DES-key function. This alternative function (accessed via |
| .B -E, -D, -S |
| and |
| .B -3 |
| ) |
| uses DES to help generate the key. |
| .LP |
| Be carefully when using the -u option. Doing des -ud <filename> will |
| not decrypt filename (the -u option will gobble the d option). |
| .LP |
| The VMS operating system operates in a world where files are always a |
| multiple of 512 bytes. This causes problems when encrypted data is |
| send from unix to VMS since a 88 byte file will suddenly be padded |
| with 424 null bytes. To get around this problem, use the -u option |
| to uuencode the data before it is send to the VMS system. |
| .SH AUTHOR |
| .LP |
| Eric Young (eay@cryptsoft.com) |