1 =pod 2 3 =head1 NAME 4 5 des - encrypt or decrypt data using Data Encryption Standard 6 7 =head1 SYNOPSIS 8 9 B<des> 10 ( 11 B<-e> 12 | 13 B<-E> 14 ) | ( 15 B<-d> 16 | 17 B<-D> 18 ) | ( 19 B<->[B<cC>][B<ckname>] 20 ) | 21 [ 22 B<-b3hfs> 23 ] [ 24 B<-k> 25 I<key> 26 ] 27 ] [ 28 B<-u>[I<uuname>] 29 [ 30 I<input-file> 31 [ 32 I<output-file> 33 ] ] 34 35 =head1 NOTE 36 37 This page describes the B<des> stand-alone program, not the B<openssl des> 38 command. 39 40 =head1 DESCRIPTION 41 42 B<des> 43 encrypts and decrypts data using the 44 Data Encryption Standard algorithm. 45 One of 46 B<-e>, B<-E> 47 (for encrypt) or 48 B<-d>, B<-D> 49 (for decrypt) must be specified. 50 It is also possible to use 51 B<-c> 52 or 53 B<-C> 54 in conjunction or instead of the a encrypt/decrypt option to generate 55 a 16 character hexadecimal checksum, generated via the 56 I<des_cbc_cksum>. 57 58 Two standard encryption modes are supported by the 59 B<des> 60 program, Cipher Block Chaining (the default) and Electronic Code Book 61 (specified with 62 B<-b>). 63 64 The key used for the DES 65 algorithm is obtained by prompting the user unless the 66 B<-k> 67 I<key> 68 option is given. 69 If the key is an argument to the 70 B<des> 71 command, it is potentially visible to users executing 72 ps(1) 73 or a derivative. To minimise this possibility, 74 B<des> 75 takes care to destroy the key argument immediately upon entry. 76 If your shell keeps a history file be careful to make sure it is not 77 world readable. 78 79 Since this program attempts to maintain compatibility with sunOS's 80 des(1) command, there are 2 different methods used to convert the user 81 supplied key to a des key. 82 Whenever and one or more of 83 B<-E>, B<-D>, B<-C> 84 or 85 B<-3> 86 options are used, the key conversion procedure will not be compatible 87 with the sunOS des(1) version but will use all the user supplied 88 character to generate the des key. 89 B<des> 90 command reads from standard input unless 91 I<input-file> 92 is specified and writes to standard output unless 93 I<output-file> 94 is given. 95 96 =head1 OPTIONS 97 98 =over 4 99 100 =item B<-b> 101 102 Select ECB 103 (eight bytes at a time) encryption mode. 104 105 =item B<-3> 106 107 Encrypt using triple encryption. 108 By default triple cbc encryption is used but if the 109 B<-b> 110 option is used then triple ECB encryption is performed. 111 If the key is less than 8 characters long, the flag has no effect. 112 113 =item B<-e> 114 115 Encrypt data using an 8 byte key in a manner compatible with sunOS 116 des(1). 117 118 =item B<-E> 119 120 Encrypt data using a key of nearly unlimited length (1024 bytes). 121 This will product a more secure encryption. 122 123 =item B<-d> 124 125 Decrypt data that was encrypted with the B<-e> option. 126 127 =item B<-D> 128 129 Decrypt data that was encrypted with the B<-E> option. 130 131 =item B<-c> 132 133 Generate a 16 character hexadecimal cbc checksum and output this to 134 stderr. 135 If a filename was specified after the 136 B<-c> 137 option, the checksum is output to that file. 138 The checksum is generated using a key generated in a sunOS compatible 139 manner. 140 141 =item B<-C> 142 143 A cbc checksum is generated in the same manner as described for the 144 B<-c> 145 option but the DES key is generated in the same manner as used for the 146 B<-E> 147 and 148 B<-D> 149 options 150 151 =item B<-f> 152 153 Does nothing - allowed for compatibility with sunOS des(1) command. 154 155 =item B<-s> 156 157 Does nothing - allowed for compatibility with sunOS des(1) command. 158 159 =item B<-k> I<key> 160 161 Use the encryption 162 I<key> 163 specified. 164 165 =item B<-h> 166 167 The 168 I<key> 169 is assumed to be a 16 character hexadecimal number. 170 If the 171 B<-3> 172 option is used the key is assumed to be a 32 character hexadecimal 173 number. 174 175 =item B<-u> 176 177 This flag is used to read and write uuencoded files. If decrypting, 178 the input file is assumed to contain uuencoded, DES encrypted data. 179 If encrypting, the characters following the B<-u> are used as the name of 180 the uuencoded file to embed in the begin line of the uuencoded 181 output. If there is no name specified after the B<-u>, the name text.des 182 will be embedded in the header. 183 184 =head1 SEE ALSO 185 186 ps(1), 187 L<des_crypt(3)|des_crypt(3)> 188 189 =head1 BUGS 190 191 The problem with using the 192 B<-e> 193 option is the short key length. 194 It would be better to use a real 56-bit key rather than an 195 ASCII-based 56-bit pattern. Knowing that the key was derived from ASCII 196 radically reduces the time necessary for a brute-force cryptographic attack. 197 My attempt to remove this problem is to add an alternative text-key to 198 DES-key function. This alternative function (accessed via 199 B<-E>, B<-D>, B<-S> 200 and 201 B<-3>) 202 uses DES to help generate the key. 203 204 Be carefully when using the B<-u> option. Doing B<des -ud> I<filename> will 205 not decrypt filename (the B<-u> option will gobble the B<-d> option). 206 207 The VMS operating system operates in a world where files are always a 208 multiple of 512 bytes. This causes problems when encrypted data is 209 send from Unix to VMS since a 88 byte file will suddenly be padded 210 with 424 null bytes. To get around this problem, use the B<-u> option 211 to uuencode the data before it is send to the VMS system. 212 213 =head1 AUTHOR 214 215 Eric Young (eay (a] cryptsoft.com) 216 217 =cut 218