BSD 4_4_Lite2 development
[unix-history] / usr / share / man / cat3 / des_crypt.0
CommitLineData
b1052012
C
1
2
3
4DES_CRYPT(3) BSD Programmer's Manual DES_CRYPT(3)
5
6
7N\bNA\bAM\bME\bE
8 des_read_password, des_string_to_key, des_random_key,
9 des_set_key, des_ecb_encrypt, des_cbc_encrypt,
10 des_pcbc_encrypt, des_cbc_cksum, des_quad_cksum, - (new)
11 DES encryption
12
13S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
14 #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<k\bke\ber\brb\bbe\ber\bro\bos\bsI\bIV\bV/\b/d\bde\bes\bs.\b.h\bh>\b>
15
16 i\bin\bnt\bt d\bde\bes\bs_\b_r\bre\bea\bad\bd_\b_p\bpa\bas\bss\bsw\bwo\bor\brd\bd(\b(k\bke\bey\by,\b,p\bpr\bro\bom\bmp\bpt\bt,\b,v\bve\ber\bri\bif\bfy\by)\b)
17 des_cblock *key;
18 char *prompt;
19 int verify;
20
21 i\bin\bnt\bt d\bde\bes\bs_\b_s\bst\btr\bri\bin\bng\bg_\b_t\bto\bo_\b_k\bke\bey\by(\b(s\bst\btr\br,\b,k\bke\bey\by)\b)
22 c\bch\bha\bar\br *\b*s\bst\btr\br;\b;
23 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk k\bke\bey\by;\b;
24
25 i\bin\bnt\bt d\bde\bes\bs_\b_r\bra\ban\bnd\bdo\bom\bm_\b_k\bke\bey\by(\b(k\bke\bey\by)\b)
26 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*k\bke\bey\by;\b;
27
28 i\bin\bnt\bt d\bde\bes\bs_\b_s\bse\bet\bt_\b_k\bke\bey\by(\b(k\bke\bey\by,\b,s\bsc\bch\bhe\bed\bdu\bul\ble\be)\b)
29 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*k\bke\bey\by;\b;
30 d\bde\bes\bs_\b_k\bke\bey\by_\b_s\bsc\bch\bhe\bed\bdu\bul\ble\be s\bsc\bch\bhe\bed\bdu\bul\ble\be;\b;
31
32 i\bin\bnt\bt d\bde\bes\bs_\b_e\bec\bcb\bb_\b_e\ben\bnc\bcr\bry\byp\bpt\bt(\b(i\bin\bnp\bpu\but\bt,\b,o\bou\but\btp\bpu\but\bt,\b,s\bsc\bch\bhe\bed\bdu\bul\ble\be,\b,e\ben\bnc\bcr\bry\byp\bpt\bt)\b)
33 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\bin\bnp\bpu\but\bt;\b;
34 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*o\bou\but\btp\bpu\but\bt;\b;
35 d\bde\bes\bs_\b_k\bke\bey\by_\b_s\bsc\bch\bhe\bed\bdu\bul\ble\be s\bsc\bch\bhe\bed\bdu\bul\ble\be;\b;
36 i\bin\bnt\bt e\ben\bnc\bcr\bry\byp\bpt\bt;\b;
37
38 i\bin\bnt\bt d\bde\bes\bs_\b_c\bcb\bbc\bc_\b_e\ben\bnc\bcr\bry\byp\bpt\bt(\b(i\bin\bnp\bpu\but\bt,\b,o\bou\but\btp\bpu\but\bt,\b,l\ble\ben\bng\bgt\bth\bh,\b,s\bsc\bch\bhe\bed\bdu\bul\ble\be,\b,i\biv\bve\bec\bc,\b,e\ben\bnc\bcr\bry\byp\bpt\bt)\b)
39 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\bin\bnp\bpu\but\bt;\b;
40 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*o\bou\but\btp\bpu\but\bt;\b;
41 l\blo\bon\bng\bg l\ble\ben\bng\bgt\bth\bh;\b;
42 d\bde\bes\bs_\b_k\bke\bey\by_\b_s\bsc\bch\bhe\bed\bdu\bul\ble\be s\bsc\bch\bhe\bed\bdu\bul\ble\be;\b;
43 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\biv\bve\bec\bc;\b;
44 i\bin\bnt\bt e\ben\bnc\bcr\bry\byp\bpt\bt;\b;
45
46 i\bin\bnt\bt d\bde\bes\bs_\b_p\bpc\bcb\bbc\bc_\b_e\ben\bnc\bcr\bry\byp\bpt\bt(\b(i\bin\bnp\bpu\but\bt,\b,o\bou\but\btp\bpu\but\bt,\b,l\ble\ben\bng\bgt\bth\bh,\b,s\bsc\bch\bhe\bed\bdu\bul\ble\be,\b,i\biv\bve\bec\bc,\b,e\ben\bnc\bcr\bry\byp\bpt\bt)\b)
47 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\bin\bnp\bpu\but\bt;\b;
48 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*o\bou\but\btp\bpu\but\bt;\b;
49 l\blo\bon\bng\bg l\ble\ben\bng\bgt\bth\bh;\b;
50 d\bde\bes\bs_\b_k\bke\bey\by_\b_s\bsc\bch\bhe\bed\bdu\bul\ble\be s\bsc\bch\bhe\bed\bdu\bul\ble\be;\b;
51 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\biv\bve\bec\bc;\b;
52 i\bin\bnt\bt e\ben\bnc\bcr\bry\byp\bpt\bt;\b;
53
54 u\bun\bns\bsi\big\bgn\bne\bed\bd l\blo\bon\bng\bg d\bde\bes\bs_\b_c\bcb\bbc\bc_\b_c\bck\bks\bsu\bum\bm(\b(i\bin\bnp\bpu\but\bt,\b,o\bou\but\btp\bpu\but\bt,\b,l\ble\ben\bng\bgt\bth\bh,\b,s\bsc\bch\bhe\bed\bdu\bul\ble\be,\b,i\biv\bve\bec\bc)\b)
55 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\bin\bnp\bpu\but\bt;\b;
56 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*o\bou\but\btp\bpu\but\bt;\b;
57 l\blo\bon\bng\bg l\ble\ben\bng\bgt\bth\bh;\b;
58
59
60
61MIT Project Athena Kerberos Version 4.0 1
62
63
64
65
66
67
68
69
70DES_CRYPT(3) BSD Programmer's Manual DES_CRYPT(3)
71
72
73 d\bde\bes\bs_\b_k\bke\bey\by_\b_s\bsc\bch\bhe\bed\bdu\bul\ble\be s\bsc\bch\bhe\bed\bdu\bul\ble\be;\b;
74 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\biv\bve\bec\bc;\b;
75
76 u\bun\bns\bsi\big\bgn\bne\bed\bd l\blo\bon\bng\bg q\bqu\bua\bad\bd_\b_c\bck\bks\bsu\bum\bm(\b(i\bin\bnp\bpu\but\bt,\b,o\bou\but\btp\bpu\but\bt,\b,l\ble\ben\bng\bgt\bth\bh,\b,o\bou\but\bt_\b_c\bco\bou\bun\bnt\bt,\b,s\bse\bee\bed\bd)\b)
77 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*i\bin\bnp\bpu\but\bt;\b;
78 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*o\bou\but\btp\bpu\but\bt;\b;
79 l\blo\bon\bng\bg l\ble\ben\bng\bgt\bth\bh;\b;
80 i\bin\bnt\bt o\bou\but\bt_\b_c\bco\bou\bun\bnt\bt;\b;
81 d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk *\b*s\bse\bee\bed\bd;\b;
82
83
84D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
85 This library supports various DES encryption related oper-
86 ations. It differs from the _\bc_\br_\by_\bp_\bt_\b, _\bs_\be_\bt_\bk_\be_\by_\b, _\ba_\bn_\bd _\be_\bn_\bc_\br_\by_\bp_\bt
87 library routines in that it provides a true DES encryp-
88 tion, without modifying the algorithm, and executes much
89 faster.
90
91 For each key that may be simultaneously active, create a
92 d\bde\bes\bs_\b_k\bke\bey\by_\b_s\bsc\bch\bhe\bed\bdu\bul\ble\be struct, defined in "des.h". Next, create
93 key schedules (from the 8-byte keys) as needed, via
94 _\bd_\be_\bs_\b__\bs_\be_\bt_\b__\bk_\be_\by_\b, prior to using the encryption or checksum
95 routines. Then setup the input and output areas. Make
96 sure to note the restrictions on lengths being multiples
97 of eight bytes. Finally, invoke the encryption/decryption
98 routines, _\bd_\be_\bs_\b__\be_\bc_\bb_\b__\be_\bn_\bc_\br_\by_\bp_\bt or _\bd_\be_\bs_\b__\bc_\bb_\bc_\b__\be_\bn_\bc_\br_\by_\bp_\bt or
99 _\bd_\be_\bs_\b__\bp_\bc_\bb_\bc_\b__\be_\bn_\bc_\br_\by_\bp_\bt_\b, or, to generate a cryptographic check-
100 sum, use _\bq_\bu_\ba_\bd_\b__\bc_\bk_\bs_\bu_\bm (fast) or _\bd_\be_\bs_\b__\bc_\bb_\bc_\b__\bc_\bk_\bs_\bu_\bm (slow).
101
102 A _\bd_\be_\bs_\b__\bc_\bb_\bl_\bo_\bc_\bk struct is an 8 byte block used as the funda-
103 mental unit for DES data and keys, and is defined as:
104
105 t\bty\byp\bpe\bed\bde\bef\bf u\bun\bns\bsi\big\bgn\bne\bed\bd c\bch\bha\bar\br d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk[\b[8\b8]\b];\b;
106
107 and a _\bd_\be_\bs_\b__\bk_\be_\by_\b__\bs_\bc_\bh_\be_\bd_\bu_\bl_\be_\b, is defined as:
108
109 t\bty\byp\bpe\bed\bde\bef\bf s\bst\btr\bru\buc\bct\bt d\bde\bes\bs_\b_k\bks\bs_\b_s\bst\btr\bru\buc\bct\bt {\b{d\bde\bes\bs_\b_c\bcb\bbl\blo\boc\bck\bk _\b_;\b;}\b}
110 d\bde\bes\bs_\b_k\bke\bey\by_\b_s\bsc\bch\bhe\bed\bdu\bul\ble\be[\b[1\b16\b6]\b];\b;
111
112 _\bd_\be_\bs_\b__\br_\be_\ba_\bd_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd writes the string specified by _\bp_\br_\bo_\bm_\bp_\bt to
113 the standard output, turns off echo (if possible) and
114 reads an input string from standard input until terminated
115 with a newline. If _\bv_\be_\br_\bi_\bf_\by is non-zero, it prompts and
116 reads input again, for use in applications such as chang-
117 ing a password; both versions are compared, and the input
118 is requested repeatedly until they match. Then
119 _\bd_\be_\bs_\b__\br_\be_\ba_\bd_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd converts the input string into a valid
120 DES key, internally using the _\bd_\be_\bs_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\bo_\b__\bk_\be_\by routine.
121 The newly created key is copied to the area pointed to by
122 the _\bk_\be_\by argument. _\bd_\be_\bs_\b__\br_\be_\ba_\bd_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd returns a zero if no
123 errors occurred, or a -1 indicating that an error occurred
124
125
126
127MIT Project Athena Kerberos Version 4.0 2
128
129
130
131
132
133
134
135
136DES_CRYPT(3) BSD Programmer's Manual DES_CRYPT(3)
137
138
139 trying to manipulate the terminal echo.
140
141
142 _\bd_\be_\bs_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\bo_\b__\bk_\be_\by converts an arbitrary length null-
143 terminated string to an 8 byte DES key, with odd byte par-
144 ity, per FIPS specification. A one-way function is used
145 to convert the string to a key, making it very difficult
146 to reconstruct the string from the key. The _\bs_\bt_\br argument
147 is a pointer to the string, and _\bk_\be_\by should point to a
148 _\bd_\be_\bs_\b__\bc_\bb_\bl_\bo_\bc_\bk supplied by the caller to receive the generated
149 key. No meaningful value is returned. Void is not used
150 for compatibility with other compilers.
151
152
153 _\bd_\be_\bs_\b__\br_\ba_\bn_\bd_\bo_\bm_\b__\bk_\be_\by generates a random DES encryption key
154 (eight bytes), set to odd parity per FIPS specifications.
155 This routine uses the current time, process id, and a
156 counter as a seed for the random number generator. The
157 caller must supply space for the output key, pointed to
158 by argument _\bk_\be_\by_\b, then after calling _\bd_\be_\bs_\b__\br_\ba_\bn_\bd_\bo_\bm_\b__\bk_\be_\by should
159 call the _\bd_\be_\bs_\b__\bs_\be_\bt_\b__\bk_\be_\by routine when needed. No meaningful
160 value is returned. Void is not used for compatibility
161 with other compilers.
162
163
164 _\bd_\be_\bs_\b__\bs_\be_\bt_\b__\bk_\be_\by calculates a key schedule from all eight bytes
165 of the input key, pointed to by the _\bk_\be_\by argument, and out-
166 puts the schedule into the _\bd_\be_\bs_\b__\bk_\be_\by_\b__\bs_\bc_\bh_\be_\bd_\bu_\bl_\be indicated by
167 the _\bs_\bc_\bh_\be_\bd_\bu_\bl_\be argument. Make sure to pass a valid eight
168 byte key; no padding is done. The key schedule may then
169 be used in subsequent encryption/decryption/checksum oper-
170 ations. Many key schedules may be cached for later use.
171 The user is responsible to clear keys and schedules as
172 soon as no longer needed, to prevent their disclosure.
173 The routine also checks the key parity, and returns a zero
174 if the key parity is correct (odd), a -1 indicating a key
175 parity error, or a -2 indicating use of an illegal weak
176 key. If an error is returned, the key schedule was not
177 created.
178
179
180 _\bd_\be_\bs_\b__\be_\bc_\bb_\b__\be_\bn_\bc_\br_\by_\bp_\bt is the basic DES encryption routine that
181 encrypts or decrypts a single 8-byte block in e\bel\ble\bec\bct\btr\bro\bon\bni\bic\bc
182 c\bco\bod\bde\be b\bbo\boo\bok\bk mode. It always transforms the input data,
183 pointed to by _\bi_\bn_\bp_\bu_\bt_\b, into the output data, pointed to by
184 the _\bo_\bu_\bt_\bp_\bu_\bt argument.
185
186 If the _\be_\bn_\bc_\br_\by_\bp_\bt argument is non-zero, the _\bi_\bn_\bp_\bu_\bt (cleartext)
187 is encrypted into the _\bo_\bu_\bt_\bp_\bu_\bt (ciphertext) using the
188 key_schedule specified by the _\bs_\bc_\bh_\be_\bd_\bu_\bl_\be argument, previ-
189 ously set via _\bd_\be_\bs_\b__\bs_\be_\bt_\b__\bk_\be_\by
190
191
192
193MIT Project Athena Kerberos Version 4.0 3
194
195
196
197
198
199
200
201
202DES_CRYPT(3) BSD Programmer's Manual DES_CRYPT(3)
203
204
205 If encrypt is zero, the _\bi_\bn_\bp_\bu_\bt (now ciphertext) is
206 decrypted into the _\bo_\bu_\bt_\bp_\bu_\bt (now cleartext).
207
208 Input and output may overlap.
209
210 No meaningful value is returned. Void is not used for
211 compatibility with other compilers.
212
213
214 _\bd_\be_\bs_\b__\bc_\bb_\bc_\b__\be_\bn_\bc_\br_\by_\bp_\bt encrypts/decrypts using the c\bci\bip\bph\bhe\ber\br-\b-b\bbl\blo\boc\bck\bk-\b-
215 c\bch\bha\bai\bin\bni\bin\bng\bg m\bmo\bod\bde\be o\bof\bf D\bDE\bES\bS.\b. If the _\be_\bn_\bc_\br_\by_\bp_\bt argument is non-
216 zero, the routine cipher-block-chain encrypts the cleart-
217 ext data pointed to by the _\bi_\bn_\bp_\bu_\bt argument into the cipher-
218 text pointed to by the _\bo_\bu_\bt_\bp_\bu_\bt argument, using the key
219 schedule provided by the _\bs_\bc_\bh_\be_\bd_\bu_\bl_\be argument, and initial-
220 ization vector provided by the _\bi_\bv_\be_\bc argument. If the
221 _\bl_\be_\bn_\bg_\bt_\bh argument is not an integral multiple of eight
222 bytes, the last block is copied to a temp and zero filled
223 (highest addresses). The output is ALWAYS an integral
224 multiple of eight bytes.
225
226 If _\be_\bn_\bc_\br_\by_\bp_\bt is zero, the routine cipher-block chain
227 decrypts the (now) ciphertext data pointed to by the _\bi_\bn_\bp_\bu_\bt
228 argument into (now) cleartext pointed to by the _\bo_\bu_\bt_\bp_\bu_\bt
229 argument using the key schedule provided by the _\bs_\bc_\bh_\be_\bd_\bu_\bl_\be
230 argument, and initialization vector provided by the _\bi_\bv_\be_\bc
231 argument. Decryption ALWAYS operates on integral multiples
232 of 8 bytes, so it will round the _\bl_\be_\bn_\bg_\bt_\bh provided up to the
233 appropriate multiple. Consequently, it will always produce
234 the rounded-up number of bytes of output cleartext. The
235 application must determine if the output cleartext was
236 zero-padded due to original cleartext lengths that were
237 not integral multiples of 8.
238
239 No errors or meaningful values are returned. Void is not
240 used for compatibility with other compilers.
241
242 A characteristic of cbc mode is that changing a single bit
243 of the cleartext, then encrypting using cbc mode, affects
244 ALL the subsequent ciphertext. This makes cryptanalysis
245 much more difficult. However, modifying a single bit of
246 the ciphertext, then decrypting, only affects the result-
247 ing cleartext from the modified block and the succeeding
248 block. Therefore, _\bd_\be_\bs_\b__\bp_\bc_\bb_\bc_\b__\be_\bn_\bc_\br_\by_\bp_\bt is STRONGLY recom-
249 mended for applications where indefinite propagation of
250 errors is required in order to detect modifications.
251
252
253 _\bd_\be_\bs_\b__\bp_\bc_\bb_\bc_\b__\be_\bn_\bc_\br_\by_\bp_\bt encrypts/decrypts using a modified block
254 chaining mode. Its calling sequence is identical to
255 _\bd_\be_\bs_\b__\bc_\bb_\bc_\b__\be_\bn_\bc_\br_\by_\bp_\bt_\b. It differs in its error propagation
256
257
258
259MIT Project Athena Kerberos Version 4.0 4
260
261
262
263
264
265
266
267
268DES_CRYPT(3) BSD Programmer's Manual DES_CRYPT(3)
269
270
271 characteristics.
272
273 _\bd_\be_\bs_\b__\bp_\bc_\bb_\bc_\b__\be_\bn_\bc_\br_\by_\bp_\bt is highly recommended for most encryption
274 purposes, in that modification of a single bit of the
275 ciphertext will affect ALL the subsequent (decrypted)
276 cleartext. Similarly, modifying a single bit of the clear-
277 text will affect ALL the subsequent (encrypted) cipher-
278 text. "PCBC" mode, on encryption, "xors" both the cleart-
279 ext of block N and the ciphertext resulting from block N
280 with the cleartext for block N+1 prior to encrypting block
281 N+1.
282
283 _\bd_\be_\bs_\b__\bc_\bb_\bc_\b__\bc_\bk_\bs_\bu_\bm produces an 8 byte cryptographic checksum by
284 cipher-block-chain encrypting the cleartext data pointed
285 to by the _\bi_\bn_\bp_\bu_\bt argument. All of the ciphertext output is
286 discarded, except the last 8-byte ciphertext block, which
287 is written into the area pointed to by the _\bo_\bu_\bt_\bp_\bu_\bt argu-
288 ment. It uses the key schedule, provided by the _\bs_\bc_\bh_\be_\bd_\bu_\bl_\be
289 argument and initialization vector provided by the _\bi_\bv_\be_\bc
290 argument. If the _\bl_\be_\bn_\bg_\bt_\bh argument is not an integral mul-
291 tiple of eight bytes, the last cleartext block is copied
292 to a temp and zero filled (highest addresses). The output
293 is ALWAYS eight bytes.
294
295 The routine also returns an unsigned long, which is the
296 last (highest address) half of the 8 byte checksum com-
297 puted.
298
299
300 _\bq_\bu_\ba_\bd_\b__\bc_\bk_\bs_\bu_\bm produces a checksum by chaining quadratic oper-
301 ations on the cleartext data pointed to by the _\bi_\bn_\bp_\bu_\bt argu-
302 ment. The _\bl_\be_\bn_\bg_\bt_\bh argument specifies the length of the
303 input -- only exactly that many bytes are included for the
304 checksum, without any padding.
305
306 The algorithm may be iterated over the same input data, if
307 the _\bo_\bu_\bt_\b__\bc_\bo_\bu_\bn_\bt argument is 2, 3 or 4, and the optional _\bo_\bu_\bt_\b-
308 _\bp_\bu_\bt argument is a non-null pointer . The default is one
309 iteration, and it will not run more than 4 times. Multiple
310 iterations run slower, but provide a longer checksum if
311 desired. The _\bs_\be_\be_\bd argument provides an 8-byte seed for the
312 first iteration. If multiple iterations are requested, the
313 results of one iteration are automatically used as the
314 seed for the next iteration.
315
316 It returns both an unsigned long checksum value, and if
317 the _\bo_\bu_\bt_\bp_\bu_\bt argument is not a null pointer, up to 16 bytes
318 of the computed checksum are written into the output.
319
320
321
322
323
324
325MIT Project Athena Kerberos Version 4.0 5
326
327
328
329
330
331
332
333
334DES_CRYPT(3) BSD Programmer's Manual DES_CRYPT(3)
335
336
337F\bFI\bIL\bLE\bES\bS
338 /usr/include/kerberosIV/des.h
339 /usr/lib/libdes.a
340
341S\bSE\bEE\bE A\bAL\bLS\bSO\bO
342D\bDI\bIA\bAG\bGN\bNO\bOS\bST\bTI\bIC\bCS\bS
343B\bBU\bUG\bGS\bS
344 This software has not yet been compiled or tested on
345 machines other than the VAX and the IBM PC.
346
347A\bAU\bUT\bTH\bHO\bOR\bRS\bS
348 Steve Miller, MIT Project Athena/Digital Equipment Corpo-
349 ration
350
351R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTI\bIO\bON\bNS\bS
352 COPYRIGHT 1985,1986 Massachusetts Institute of Technology
353
354 This software may not be exported outside of the US with-
355 out a special license from the US Dept of Commerce. It may
356 be replaced by any secret key block cipher with block
357 length and key length of 8 bytes, as long as the interface
358 is the same as described here.
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391MIT Project Athena Kerberos Version 4.0 6
392
393
394
395
396