]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - secure/usr.bin/bdes/bdes.ps
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / secure / usr.bin / bdes / bdes.ps
1 %!
2 %%BoundingBox: (atend)
3 %%Pages: (atend)
4 %%DocumentFonts: (atend)
5 %%EndComments
6 %
7 % FrameMaker PostScript Prolog 2.0, for use with FrameMaker 2.0
8 % Copyright (c) 1986,87,89 by Frame Technology, Inc.  All rights reserved.
9 %
10 % Known Problems:
11 %       Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
12 % $FreeBSD$
13 /FMversion (2.0) def 
14 % Set up Color vs. Black-and-White
15         /FMPrintInColor systemdict /colorimage known def
16 % Uncomment this line to force b&w on color printer
17 %   /FMPrintInColor false def
18 /FrameDict 190 dict def 
19 systemdict /errordict known not {/errordict 10 dict def
20                 errordict /rangecheck {stop} put} if
21 % The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
22 FrameDict /tmprangecheck errordict /rangecheck get put 
23 errordict /rangecheck {FrameDict /bug true put} put 
24 FrameDict /bug false put 
25 mark 
26 % Some PS machines read past the CR, so keep the following 3 lines together!
27 currentfile 5 string readline
28 00
29 0000000000
30 cleartomark 
31 errordict /rangecheck FrameDict /tmprangecheck get put 
32 FrameDict /bug get { 
33         /readline {
34                 /gstring exch def
35                 /gfile exch def
36                 /gindex 0 def
37                 {
38                         gfile read pop 
39                         dup 10 eq {exit} if 
40                         dup 13 eq {exit} if 
41                         gstring exch gindex exch put 
42                         /gindex gindex 1 add def 
43                 } loop
44                 pop 
45                 gstring 0 gindex getinterval true 
46                 } def
47         } if
48 /FMVERSION {
49         FMversion ne {
50                 /Times-Roman findfont 18 scalefont setfont
51                 100 100 moveto
52                 (FrameMaker version does not match postscript_prolog!)
53                 dup =
54                 show showpage
55                 } if
56         } def 
57 /FMLOCAL {
58         FrameDict begin
59         0 def 
60         end 
61         } def 
62         /gstring FMLOCAL
63         /gfile FMLOCAL
64         /gindex FMLOCAL
65         /orgxfer FMLOCAL
66         /orgproc FMLOCAL
67         /organgle FMLOCAL
68         /orgfreq FMLOCAL
69         /yscale FMLOCAL
70         /xscale FMLOCAL
71         /manualfeed FMLOCAL
72         /paperheight FMLOCAL
73         /paperwidth FMLOCAL
74 /FMDOCUMENT { 
75         array /FMfonts exch def 
76         /#copies exch def
77         FrameDict begin
78         0 ne dup {setmanualfeed} if
79         /manualfeed exch def
80         /paperheight exch def
81         /paperwidth exch def
82         setpapername
83         manualfeed {true} {papersize} ifelse 
84         {manualpapersize} {false} ifelse 
85         {desperatepapersize} if
86         /yscale exch def
87         /xscale exch def
88         currenttransfer cvlit /orgxfer exch def
89         currentscreen cvlit /orgproc exch def
90         /organgle exch def /orgfreq exch def
91         end 
92         } def 
93         /pagesave FMLOCAL
94         /orgmatrix FMLOCAL
95         /landscape FMLOCAL
96 /FMBEGINPAGE { 
97         FrameDict begin 
98         /pagesave save def
99         3.86 setmiterlimit
100         /landscape exch 0 ne def
101         landscape { 
102                 90 rotate 0 exch neg translate pop 
103                 }
104                 {pop pop}
105                 ifelse
106         xscale yscale scale
107         /orgmatrix matrix def
108         gsave 
109         } def 
110 /FMENDPAGE {
111         grestore 
112         pagesave restore
113         end 
114         showpage
115         } def 
116 /FMDEFINEFONT { 
117         FrameDict begin
118         findfont 
119         ReEncode 
120         2 index exch 
121         definefont exch 
122         scalefont 
123         FMfonts 3 1 roll 
124         put
125         end 
126         } bind def
127 /FMNORMALIZEGRAPHICS { 
128         newpath
129         0.0 0.0 moveto
130         1 setlinewidth
131         0 setlinecap
132         0 0 0 sethsbcolor
133         0 setgray 
134         } bind def
135         /fx FMLOCAL
136         /fy FMLOCAL
137         /fh FMLOCAL
138         /fw FMLOCAL
139         /llx FMLOCAL
140         /lly FMLOCAL
141         /urx FMLOCAL
142         /ury FMLOCAL
143 /FMBEGINEPSF { 
144         end 
145         /FMEPSF save def 
146         /showpage {} def 
147         FMNORMALIZEGRAPHICS 
148         [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall 
149         fx fy translate 
150         rotate
151         fw urx llx sub div fh ury lly sub div scale 
152         llx neg lly neg translate 
153         } bind def
154 /FMENDEPSF {
155         FMEPSF restore
156         FrameDict begin 
157         } bind def
158 FrameDict begin 
159 /setmanualfeed {
160 %%BeginFeature *ManualFeed True
161          statusdict /manualfeed true put
162 %%EndFeature
163         } def
164 /max {2 copy lt {exch} if pop} bind def
165 /min {2 copy gt {exch} if pop} bind def
166 /inch {72 mul} def
167 /pagedimen { 
168         paperheight sub abs 16 lt exch 
169         paperwidth sub abs 16 lt and
170         {/papername exch def} {pop} ifelse
171         } def
172         /papersizedict FMLOCAL
173 /setpapername { 
174         /papersizedict 14 dict def 
175         papersizedict begin
176         /papername /unknown def 
177                 /Letter 8.5 inch 11.0 inch pagedimen
178                 /LetterSmall 7.68 inch 10.16 inch pagedimen
179                 /Tabloid 11.0 inch 17.0 inch pagedimen
180                 /Ledger 17.0 inch 11.0 inch pagedimen
181                 /Legal 8.5 inch 14.0 inch pagedimen
182                 /Statement 5.5 inch 8.5 inch pagedimen
183                 /Executive 7.5 inch 10.0 inch pagedimen
184                 /A3 11.69 inch 16.5 inch pagedimen
185                 /A4 8.26 inch 11.69 inch pagedimen
186                 /A4Small 7.47 inch 10.85 inch pagedimen
187                 /B4 10.125 inch 14.33 inch pagedimen
188                 /B5 7.16 inch 10.125 inch pagedimen
189         end
190         } def
191 /papersize {
192         papersizedict begin
193                 /Letter {lettertray} def
194                 /LetterSmall {lettertray lettersmall} def
195                 /Tabloid {11x17tray} def
196                 /Ledger {ledgertray} def
197                 /Legal {legaltray} def
198                 /Statement {statementtray} def
199                 /Executive {executivetray} def
200                 /A3 {a3tray} def
201                 /A4 {a4tray} def
202                 /A4Small {a4tray a4small} def
203                 /B4 {b4tray} def
204                 /B5 {b5tray} def
205                 /unknown {unknown} def
206         papersizedict dup papername known {papername} {/unknown} ifelse get
207         end
208         /FMdicttop countdictstack 1 add def
209         statusdict begin stopped end 
210         countdictstack -1 FMdicttop {pop end} for
211         } def
212 /manualpapersize {
213         papersizedict begin
214                 /Letter {letter} def
215                 /LetterSmall {lettersmall} def
216                 /Tabloid {11x17} def
217                 /Ledger {ledger} def
218                 /Legal {legal} def
219                 /Statement {statement} def
220                 /Executive {executive} def
221                 /A3 {a3} def
222                 /A4 {a4} def
223                 /A4Small {a4small} def
224                 /B4 {b4} def
225                 /B5 {b5} def
226                 /unknown {unknown} def
227         papersizedict dup papername known {papername} {/unknown} ifelse get
228         end
229         stopped 
230         } def
231 /desperatepapersize {
232         statusdict /setpageparams known
233                 {
234                 paperwidth paperheight 0 1 
235                 statusdict begin
236                 {setpageparams} stopped pop 
237                 end
238                 } if
239         } def
240 /savematrix {
241         orgmatrix currentmatrix pop
242         } bind def
243 /restorematrix {
244         orgmatrix setmatrix
245         } bind def
246 /dmatrix matrix def
247 /dpi    72 0 dmatrix defaultmatrix dtransform
248     dup mul exch   dup mul add   sqrt def
249 /freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
250 /sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
251 /DiacriticEncoding [
252 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
253 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
254 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
255 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
256 /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
257 /numbersign /dollar /percent /ampersand /quotesingle /parenleft
258 /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
259 /two /three /four /five /six /seven /eight /nine /colon /semicolon
260 /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
261 /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
262 /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
263 /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
264 /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
265 /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
266 /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
267 /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
268 /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
269 /udieresis /dagger /.notdef /cent /sterling /section /bullet
270 /paragraph /germandbls /registered /copyright /trademark /acute
271 /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
272 /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
273 /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
274 /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
275 /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
276 /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
277 /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
278 /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
279 /periodcentered /quotesinglbase /quotedblbase /perthousand
280 /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
281 /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
282 /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
283 /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
284 ] def
285 /ReEncode { 
286         dup 
287         length 
288         dict begin 
289         {
290         1 index /FID ne 
291                 {def} 
292                 {pop pop} ifelse 
293         } forall
294         Encoding StandardEncoding eq 
295         {
296                 /Encoding DiacriticEncoding def
297         }if
298         currentdict 
299         end 
300         } bind def
301 /graymode true def
302         /bwidth FMLOCAL
303         /bpside FMLOCAL
304         /bstring FMLOCAL
305         /onbits FMLOCAL
306         /offbits FMLOCAL
307         /xindex FMLOCAL
308         /yindex FMLOCAL
309         /x FMLOCAL
310         /y FMLOCAL
311 /setpattern {
312          /bwidth  exch def
313          /bpside  exch def
314          /bstring exch def
315          /onbits 0 def  /offbits 0 def
316          freq sangle landscape {90 add} if 
317                 {/y exch def
318                  /x exch def
319                  /xindex x 1 add 2 div bpside mul cvi def
320                  /yindex y 1 add 2 div bpside mul cvi def
321                  bstring yindex bwidth mul xindex 8 idiv add get
322                  1 7 xindex 8 mod sub bitshift and 0 ne
323                  {/onbits  onbits  1 add def 1}
324                  {/offbits offbits 1 add def 0}
325                  ifelse
326                 }
327                 setscreen
328          {} settransfer
329          offbits offbits onbits add div FMsetgray
330         /graymode false def
331         } bind def
332 /grayness {
333         FMsetgray
334         graymode not {
335                 /graymode true def
336                 orgxfer cvx settransfer
337                 orgfreq organgle orgproc cvx setscreen
338                 } if
339         } bind def
340         /HUE FMLOCAL
341         /SAT FMLOCAL
342         /BRIGHT FMLOCAL
343         /Colors FMLOCAL
344 FMPrintInColor 
345         
346         {
347         /HUE 0 def
348         /SAT 0 def
349         /BRIGHT 0 def
350         % array of arrays Hue and Sat values for the separations [HUE BRIGHT]
351         /Colors   
352         [[0    0  ]    % black
353          [0    0  ]    % white
354          [0.00 1.0]    % red
355          [0.37 1.0]    % green
356          [0.60 1.0]    % blue
357          [0.50 1.0]    % cyan
358          [0.83 1.0]    % magenta
359          [0.16 1.0]    % comment / yellow
360          ] def
361       
362         /BEGINBITMAPCOLOR { 
363                 BITMAPCOLOR} def
364         /BEGINBITMAPCOLORc { 
365                 BITMAPCOLORc} def
366         /K { 
367                 Colors exch get dup
368                 0 get /HUE exch store 
369                 1 get /BRIGHT exch store
370                   HUE 0 eq BRIGHT 0 eq and
371                         {1.0 SAT sub setgray}
372                         {HUE SAT BRIGHT sethsbcolor} 
373                   ifelse
374                 } def
375         /FMsetgray { 
376                 /SAT exch 1.0 exch sub store 
377                   HUE 0 eq BRIGHT 0 eq and
378                         {1.0 SAT sub setgray}
379                         {HUE SAT BRIGHT sethsbcolor} 
380                   ifelse
381                 } bind def
382         }
383         
384         {
385         /BEGINBITMAPCOLOR { 
386                 BITMAPGRAY} def
387         /BEGINBITMAPCOLORc { 
388                 BITMAPGRAYc} def
389         /FMsetgray {setgray} bind def
390         /K { 
391                 pop
392                 } def
393         }
394 ifelse
395 /normalize {
396         transform round exch round exch itransform
397         } bind def
398 /dnormalize {
399         dtransform round exch round exch idtransform
400         } bind def
401 /lnormalize { 
402         0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
403         } bind def
404 /H { 
405         lnormalize setlinewidth
406         } bind def
407 /Z {
408         setlinecap
409         } bind def
410 /X { 
411         fillprocs exch get exec
412         } bind def
413 /V { 
414         gsave eofill grestore
415         } bind def
416 /N { 
417         stroke
418         } bind def
419 /M {newpath moveto} bind def
420 /E {lineto} bind def
421 /D {curveto} bind def
422 /O {closepath} bind def
423         /n FMLOCAL
424 /L { 
425         /n exch def
426         newpath
427         normalize
428         moveto 
429         2 1 n {pop normalize lineto} for
430         } bind def
431 /Y { 
432         L 
433         closepath
434         } bind def
435         /x1 FMLOCAL
436         /x2 FMLOCAL
437         /y1 FMLOCAL
438         /y2 FMLOCAL
439         /rad FMLOCAL
440 /R { 
441         /y2 exch def
442         /x2 exch def
443         /y1 exch def
444         /x1 exch def
445         x1 y1
446         x2 y1
447         x2 y2
448         x1 y2
449         4 Y 
450         } bind def
451 /RR { 
452         /rad exch def
453         normalize
454         /y2 exch def
455         /x2 exch def
456         normalize
457         /y1 exch def
458         /x1 exch def
459         newpath
460         x1 y1 rad add moveto
461         x1 y2 x2 y2 rad arcto
462         x2 y2 x2 y1 rad arcto
463         x2 y1 x1 y1 rad arcto
464         x1 y1 x1 y2 rad arcto
465         closepath
466         16 {pop} repeat
467         } bind def
468 /C { 
469         grestore
470         gsave
471         R 
472         clip
473         } bind def
474 /U { 
475         grestore
476         gsave
477         } bind def
478 /F { 
479         FMfonts exch get
480         setfont
481         } bind def
482 /T { 
483         moveto show
484         } bind def
485 /RF { 
486         rotate
487         0 ne {-1 1 scale} if
488         } bind def
489 /TF { 
490         gsave
491         moveto 
492         RF
493         show
494         grestore
495         } bind def
496 /P { 
497         moveto
498         0 32 3 2 roll widthshow
499         } bind def
500 /PF { 
501         gsave
502         moveto 
503         RF
504         0 32 3 2 roll widthshow
505         grestore
506         } bind def
507 /S { 
508         moveto
509         0 exch ashow
510         } bind def
511 /SF { 
512         gsave
513         moveto
514         RF
515         0 exch ashow
516         grestore
517         } bind def
518 /B { 
519         moveto
520         0 32 4 2 roll 0 exch awidthshow
521         } bind def
522 /BF { 
523         gsave
524         moveto
525         RF
526         0 32 4 2 roll 0 exch awidthshow
527         grestore
528         } bind def
529         /x FMLOCAL
530         /y FMLOCAL
531         /dx FMLOCAL
532         /dy FMLOCAL
533         /dl FMLOCAL
534         /t FMLOCAL
535         /t2 FMLOCAL
536         /Cos FMLOCAL
537         /Sin FMLOCAL
538         /r FMLOCAL
539 /W { 
540         dnormalize
541         /dy exch def
542         /dx exch def
543         normalize
544         /y  exch def
545         /x  exch def
546         /dl dx dx mul dy dy mul add sqrt def
547         dl 0.0 gt {
548                 /t currentlinewidth def
549                 savematrix
550                 /Cos dx dl div def
551                 /Sin dy dl div def
552                 /r [Cos Sin Sin neg Cos 0.0 0.0] def
553                 /t2 t 2.5 mul 3.5 max def
554                 newpath
555                 x y translate
556                 r concat
557                 0.0 0.0 moveto
558                 dl t 2.7 mul sub 0.0 rlineto
559                 stroke
560                 restorematrix
561                 x dx add y dy add translate
562                 r concat
563                 t 0.67 mul setlinewidth
564                 t 1.61 mul neg  0.0 translate
565                 0.0 0.0 moveto
566                 t2 1.7 mul neg  t2 2.0 div     moveto
567                 0.0 0.0 lineto
568                 t2 1.7 mul neg  t2 2.0 div neg lineto
569                 stroke
570                 t setlinewidth
571                 restorematrix
572                 } if
573         } bind def
574 /G { 
575         gsave
576         newpath
577         normalize translate 0.0 0.0 moveto 
578         dnormalize scale 
579         0.0 0.0 1.0 5 3 roll arc 
580         closepath fill
581         grestore
582         } bind def
583 /A { 
584         gsave
585         savematrix
586         newpath
587         2 index 2 div add exch 3 index 2 div sub exch 
588         normalize 2 index 2 div sub exch 3 index 2 div add exch 
589         translate 
590         scale 
591         0.0 0.0 1.0 5 3 roll arc 
592         restorematrix
593         stroke
594         grestore
595         } bind def
596         /x FMLOCAL
597         /y FMLOCAL
598         /w FMLOCAL
599         /h FMLOCAL
600         /xx FMLOCAL
601         /yy FMLOCAL
602         /ww FMLOCAL
603         /hh FMLOCAL
604         /FMsaveobject FMLOCAL
605         /FMoptop FMLOCAL
606         /FMdicttop FMLOCAL
607 /BEGINPRINTCODE { 
608         /FMdicttop countdictstack 1 add def 
609         /FMoptop count 4 sub def 
610         /FMsaveobject save def
611         userdict begin 
612         /showpage {} def 
613         FMNORMALIZEGRAPHICS 
614         3 index neg 3 index neg translate
615         } bind def
616 /ENDPRINTCODE {
617         count -1 FMoptop {pop pop} for 
618         countdictstack -1 FMdicttop {pop end} for 
619         FMsaveobject restore 
620         } bind def
621 /gn { 
622         0 
623         {       46 mul 
624                 cf read pop 
625                 32 sub 
626                 dup 46 lt {exit} if 
627                 46 sub add 
628                 } loop
629         add 
630         } bind def
631         /str FMLOCAL
632 /cfs { 
633         /str sl string def 
634         0 1 sl 1 sub {str exch val put} for 
635         str def 
636         } bind def
637 /ic [ 
638         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
639         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
640         0
641         {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
642         {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
643         {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
644         {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
645         {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
646         {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
647         {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
648         {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
649         {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
650         ] def
651         /sl FMLOCAL
652         /val FMLOCAL
653         /ws FMLOCAL
654         /im FMLOCAL
655         /bs FMLOCAL
656         /cs FMLOCAL
657         /len FMLOCAL
658         /pos FMLOCAL
659 /ms { 
660         /sl exch def 
661         /val 255 def 
662         /ws cfs 
663         /im cfs 
664         /val 0 def 
665         /bs cfs 
666         /cs cfs 
667         } bind def
668 400 ms 
669 /ip { 
670         is 
671         0 
672         cf cs readline pop 
673         {       ic exch get exec 
674                 add 
675                 } forall 
676         pop 
677         
678         } bind def
679 /wh { 
680         /len exch def 
681         /pos exch def 
682         ws 0 len getinterval im pos len getinterval copy pop
683         pos len 
684         } bind def
685 /bl { 
686         /len exch def 
687         /pos exch def 
688         bs 0 len getinterval im pos len getinterval copy pop
689         pos len 
690         } bind def
691 /s1 1 string def
692 /fl { 
693         /len exch def 
694         /pos exch def 
695         /val cf s1 readhexstring pop 0 get def
696         pos 1 pos len add 1 sub {im exch val put} for
697         pos len 
698         } bind def
699 /hx { 
700         3 copy getinterval 
701         cf exch readhexstring pop pop 
702         } bind def
703         /h FMLOCAL
704         /w FMLOCAL
705         /d FMLOCAL
706         /lb FMLOCAL
707         /bitmapsave FMLOCAL
708         /is FMLOCAL
709         /cf FMLOCAL
710 /wbytes { 
711         dup 
712         8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
713         } bind def
714 /BEGINBITMAPBWc { 
715         1 {} COMMONBITMAPc
716         } bind def
717 /BEGINBITMAPGRAYc { 
718         8 {} COMMONBITMAPc
719         } bind def
720 /BEGINBITMAP2BITc { 
721         2 {} COMMONBITMAPc
722         } bind def
723 /COMMONBITMAPc { 
724         /r exch def
725         /d exch def
726         gsave
727         translate rotate scale /h exch def /w exch def
728         /lb w d wbytes def 
729         sl lb lt {lb ms} if 
730         /bitmapsave save def 
731         r                    
732         /is im 0 lb getinterval def 
733         ws 0 lb getinterval is copy pop 
734         /cf currentfile def 
735         w h d [w 0 0 h neg 0 h] 
736         {ip} image 
737         bitmapsave restore 
738         grestore
739         } bind def
740 /BEGINBITMAPBW { 
741         1 {} COMMONBITMAP
742         } bind def
743 /BEGINBITMAPGRAY { 
744         8 {} COMMONBITMAP
745         } bind def
746 /BEGINBITMAP2BIT { 
747         2 {} COMMONBITMAP
748         } bind def
749 /COMMONBITMAP { 
750         /r exch def
751         /d exch def
752         gsave
753         translate rotate scale /h exch def /w exch def
754         /bitmapsave save def 
755         r                    
756         /is w d wbytes string def
757         /cf currentfile def 
758         w h d [w 0 0 h neg 0 h] 
759         {cf is readhexstring pop} image
760         bitmapsave restore 
761         grestore
762         } bind def
763         /proc1 FMLOCAL
764         /proc2 FMLOCAL
765         /newproc FMLOCAL
766 /Fmcc {
767     /proc2 exch cvlit def
768     /proc1 exch cvlit def
769     /newproc proc1 length proc2 length add array def
770     newproc 0 proc1 putinterval
771     newproc proc1 length proc2 putinterval
772     newproc cvx
773 } bind def
774 /ngrayt 256 array def
775 /nredt 256 array def
776 /nbluet 256 array def
777 /ngreent 256 array def
778         /gryt FMLOCAL
779         /blut FMLOCAL
780         /grnt FMLOCAL
781         /redt FMLOCAL
782         /indx FMLOCAL
783         /cynu FMLOCAL
784         /magu FMLOCAL
785         /yelu FMLOCAL
786         /k FMLOCAL
787         /u FMLOCAL
788 /colorsetup {
789         currentcolortransfer
790         /gryt exch def
791         /blut exch def
792         /grnt exch def
793         /redt exch def
794         0 1 255 {
795                 /indx exch def
796                 /cynu 1 red indx get 255 div sub def
797                 /magu 1 green indx get 255 div sub def
798                 /yelu 1 blue indx get 255 div sub def
799                 /k cynu magu min yelu min def
800                 /u k currentundercolorremoval exec def
801                 nredt indx 1 0 cynu u sub max sub redt exec put
802                 ngreent indx 1 0 magu u sub max sub grnt exec put
803                 nbluet indx 1 0 yelu u sub max sub blut exec put
804                 ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
805         } for
806         {255 mul cvi nredt exch get}
807         {255 mul cvi ngreent exch get}
808         {255 mul cvi nbluet exch get}
809         {255 mul cvi ngrayt exch get}
810         setcolortransfer
811         {pop 0} setundercolorremoval
812         {} setblackgeneration
813         } bind def
814         /tran FMLOCAL
815 /fakecolorsetup {
816         /tran 256 string def
817         0 1 255 {/indx exch def 
818                 tran indx
819                 red indx get 77 mul
820                 green indx get 151 mul
821                 blue indx get 28 mul
822                 add add 256 idiv put} for
823         currenttransfer
824         {255 mul cvi tran exch get 255.0 div}
825         exch Fmcc settransfer
826 } bind def
827 /BITMAPCOLOR { 
828         /d 8 def
829         gsave
830         translate rotate scale /h exch def /w exch def
831         /bitmapsave save def 
832         colorsetup
833         /is w d wbytes string def
834         /cf currentfile def 
835         w h d [w 0 0 h neg 0 h] 
836         {cf is readhexstring pop} {is} {is} true 3 colorimage 
837         bitmapsave restore 
838         grestore
839         } bind def
840 /BITMAPCOLORc { 
841         /d 8 def
842         gsave
843         translate rotate scale /h exch def /w exch def
844         /lb w d wbytes def 
845         sl lb lt {lb ms} if 
846         /bitmapsave save def 
847         colorsetup
848         /is im 0 lb getinterval def 
849         ws 0 lb getinterval is copy pop 
850         /cf currentfile def 
851         w h d [w 0 0 h neg 0 h] 
852         {ip} {is} {is} true 3 colorimage
853         bitmapsave restore 
854         grestore
855         } bind def
856 /BITMAPGRAY { 
857         8 {fakecolorsetup} COMMONBITMAP
858         } bind def
859 /BITMAPGRAYc { 
860         8 {fakecolorsetup} COMMONBITMAPc
861         } bind def
862 /ENDBITMAP {
863         } bind def
864 end 
865 %%EndProlog
866 %%BeginSetup
867 (2.0) FMVERSION
868 1 1 612 792 0 1 16 FMDOCUMENT
869 /fillprocs 32 array def
870 fillprocs 0 { 0.000000 grayness } put
871 fillprocs 1 { 0.100000 grayness } put
872 fillprocs 2 { 0.300000 grayness } put
873 fillprocs 3 { 0.500000 grayness } put
874 fillprocs 4 { 0.700000 grayness } put
875 fillprocs 5 { 0.900000 grayness } put
876 fillprocs 6 { 0.970000 grayness } put
877 fillprocs 7 { 1.000000 grayness } put
878 fillprocs 8 {<0f87c3e1f0783c1e> 8 1 setpattern } put
879 fillprocs 9 {<0f1e3c78f0e1c387> 8 1 setpattern } put
880 fillprocs 10 {<cccccccccccccccc> 8 1 setpattern } put
881 fillprocs 11 {<ffff0000ffff0000> 8 1 setpattern } put
882 fillprocs 12 {<8142241818244281> 8 1 setpattern } put
883 fillprocs 13 {<8040201008040201> 8 1 setpattern } put
884 fillprocs 14 {<03060c183060c081> 8 1 setpattern } put
885 fillprocs 15 {} put
886 fillprocs 16 { 1.000000 grayness } put
887 fillprocs 17 { 0.900000 grayness } put
888 fillprocs 18 { 0.700000 grayness } put
889 fillprocs 19 { 0.500000 grayness } put
890 fillprocs 20 { 0.300000 grayness } put
891 fillprocs 21 { 0.100000 grayness } put
892 fillprocs 22 { 0.030000 grayness } put
893 fillprocs 23 { 0.000000 grayness } put
894 fillprocs 24 {<f0783c1e0f87c3e1> 8 1 setpattern } put
895 fillprocs 25 {<f0e1c3870f1e3c78> 8 1 setpattern } put
896 fillprocs 26 {<3333333333333333> 8 1 setpattern } put
897 fillprocs 27 {<0000ffff0000ffff> 8 1 setpattern } put
898 fillprocs 28 {<7ebddbe7e7dbbd7e> 8 1 setpattern } put
899 fillprocs 29 {<7fbfdfeff7fbfdfe> 8 1 setpattern } put
900 fillprocs 30 {<fcf9f3e7cf9f3f7e> 8 1 setpattern } put
901 fillprocs 31 {} put
902 %%EndSetup
903 0 12 /Helvetica-Bold FMDEFINEFONT
904 1 12 /Helvetica-BoldOblique FMDEFINEFONT
905 %%Page: "-1" 1
906 %%BeginPaperSize: Letter
907 %%EndPaperSize
908 612 792 0 FMBEGINPAGE
909 144 144 468 396 R
910 7 X
911 0 K
912 V
913 0 F
914 0 X
915 1.2 (IMPLEMENT) 178.34 388 S
916 1.2 (A) 258.88 388 S
917 1.2 (TION NOTES ON ) 267.85 388 S
918 1 F
919 1.2 (bdes) 382.61 388 S
920 0 F
921 1.2 (\0501\051) 415.4 388 S
922 1.2 (Matt Bishop) 265.09 338 S
923 1.2 (T) 197.74 288 S
924 1.2 (echnical Report PCS-TR91-158) 205.38 288 S
925 FMENDPAGE
926 %%EndPage: "-1" 2
927 %%Page: "0" 2
928 612 792 0 FMBEGINPAGE
929 72 72 540 720 R
930 7 X
931 0 K
932 V
933 FMENDPAGE
934 %%EndPage: "0" 3
935 0 12 /Times-Roman FMDEFINEFONT
936 1 18 /Times-Bold FMDEFINEFONT
937 2 18 /Times-BoldItalic FMDEFINEFONT
938 3 12 /Times-Italic FMDEFINEFONT
939 4 12 /Times-Bold FMDEFINEFONT
940 5 10 /Times-Roman FMDEFINEFONT
941 6 12 /Courier FMDEFINEFONT
942 7 12 /Courier-Oblique FMDEFINEFONT
943 8 12 /ZapfDingbats FMDEFINEFONT
944 9 12 /Symbol FMDEFINEFONT
945 10 12 /Courier-Bold FMDEFINEFONT
946 %%Page: "1" 3
947 612 792 0 FMBEGINPAGE
948 72 745.99 540 756 R
949 7 X
950 0 K
951 V
952 72 32.69 540 42.7 R
953 V
954 0 F
955 0 X
956 (Page 1 of 11) 479.71 34.7 T
957 72 72 540 720 R
958 7 X
959 V
960 1 F
961 0 X
962 (Implementation Notes on ) 179.84 708 T
963 2 F
964 (bdes) 378.21 708 T
965 1 F
966 (\0501\051) 411.19 708 T
967 0 F
968 ( ) 432.17 708 T
969 3 F
970 (Matt Bishop) 276.51 676 T
971 0 F
972 (Department of Mathematics and Computer Science) 182.92 656 T
973 (Dartmouth College) 259.86 642 T
974 (Hanover) 257.45 628 T
975 (, NH 03755) 298.26 628 T
976 3 F
977 (ABSTRACT) 277.68 602 T
978 0 F
979 0.27 (This note describes the implementation of ) 108 582 P
980 3 F
981 0.27 (bdes) 314.13 582 P
982 0 F
983 0.27 (, the \336le encryption program being) 336.12 582 P
984 0.36 (distributed in the 4.4 release of the Berkeley Software Distribution. It implements) 108 568 P
985 (all modes of the Data Encryption Standard program.) 108 554 T
986 4 F
987 (1. Intr) 72 528 T
988 (oduction) 104.43 528 T
989 0 F
990 -0.09 (The Data Encryption Standard is a standard endorsed by the federal government. It is con-) 108 504 P
991 -0.56 (siderably stronger than the algorithm used by the ) 72 484 P
992 5 F
993 -0.47 (UNIX) 305.36 484 P
994 0 F
995 -0.56 (\252 ) 330.34 484 P
996 3 F
997 -0.56 (crypt) 344.53 484 P
998 0 F
999 -0.56 (\0501\051 program, and therefore is a more) 369.18 484 P
1000 0.11 (suitable candidate for protecting information, especially information contained in ) 72 464 P
1001 5 F
1002 0.09 (ASCII) 466.05 464 P
1003 0 F
1004 0.11 ( \336les. The) 492.14 464 P
1005 -0.65 (program ) 72 444 P
1006 3 F
1007 -0.65 (bdes) 114.99 444 P
1008 0 F
1009 -0.65 (\0501\051 implements the DES and all of its modes, including the two authentication modes.) 136.97 444 P
1010 -0.59 (Because others may wish to write software compatible with this program, this note presents) 108 420 P
1011 -0.04 (the layout of the encrypted \336les produced by ) 72 400 P
1012 3 F
1013 -0.04 (bdes) 288.86 400 P
1014 0 F
1015 -0.04 ( as well as internal details relevant to the imple-) 310.85 400 P
1016 -0.15 (mentation. Whereever possible and appropriate, the description of the ) 72 380 P
1017 3 F
1018 -0.15 (des) 408.04 380 P
1019 0 F
1020 -0.15 (\0501\051 program given in [4]) 424.03 380 P
1021 -0.2 (has been followed; thus, ) 72 360 P
1022 3 F
1023 -0.2 (bdes) 190.77 360 P
1024 0 F
1025 -0.2 ( is completely compatible with that program. However) 212.75 360 P
1026 -0.2 (, ) 473.33 360 P
1027 3 F
1028 -0.2 (bdes) 479.12 360 P
1029 0 F
1030 -0.2 ( also of-) 501.11 360 P
1031 (fers several extensions to ) 72 340 T
1032 3 F
1033 (des) 195.9 340 T
1034 0 F
1035 ( that are not compatible, and these will be explicitly pointed out.) 211.89 340 T
1036 -0.14 (In this note, strings typed as shown will be in ) 108 316 P
1037 6 F
1038 -0.34 (Courier Roman font) 326.78 316 P
1039 0 F
1040 -0.14 (, and strings to be) 455.62 316 P
1041 -0.42 (chosen by the user will be in ) 72 296 P
1042 7 F
1043 -1 (Courier Oblique font) 209.32 296 P
1044 0 F
1045 -0.42 (. The space character \050) 351.24 296 P
1046 5 F
1047 -0.35 (ASCII) 457.79 296 P
1048 0 F
1049 -0.42 ( <) 483.88 296 P
1050 5 F
1051 -0.35 (SP) 493.23 296 P
1052 0 F
1053 -0.42 (>, octal) 504.34 296 P
1054 -0.43 (40, decimal 32, hex 20\051 will be represented as \322) 72 276 P
1055 8 F
1056 -0.47 (z) 296.98 276 P
1057 0 F
1058 -0.43 (\323 and the newline character \050) 301.96 276 P
1059 5 F
1060 -0.35 (ASCII) 438.03 276 P
1061 0 F
1062 -0.43 ( <) 464.13 276 P
1063 5 F
1064 -0.35 (NL) 473.46 276 P
1065 0 F
1066 -0.43 (>, octal 12,) 486.79 276 P
1067 -0.05 (decimal 10, hex a\051 as \322) 72 256 P
1068 9 F
1069 -0.05 (\277) 181.65 256 P
1070 0 F
1071 -0.05 (\323. Because it is often more convenient to represent arbitrary characters as) 189.54 256 P
1072 1.13 (a sequence of hexadecimal digits, that representation will often be used; these digits will be in) 72 236 P
1073 10 F
1074 (Courier Bold font) 72 216 T
1075 0 F
1076 ( with spaces often inserted for readability) 194.33 216 T
1077 (.) 392.07 216 T
1078 4 F
1079 (2. Overview and Use) 72 184 T
1080 3 F
1081 -0.39 (Bdes) 108 160 P
1082 0 F
1083 -0.39 ( implements the Data Encryption Standard algorithm in software, and enables the user) 131.32 160 P
1084 -0.61 (to encrypt data using any of the four modes of operation of the DES \050Electronic Code Book, Cipher) 72 140 P
1085 72 72 540 720 C
1086 72 72 540 117 C
1087 72 72 549 108 R
1088 7 X
1089 0 K
1090 V
1091 5 F
1092 0 X
1093 (This work is based on work funded by grant NAG2-680 from the National
1094 Aeronautics and Space Administration to ) 72 101.33 T
1095 (Dartmouth College.) 72 89.33 T
1096 (UNIX is a Registered T) 72 77.33 T
1097 (rademark of A) 166.58 77.33 T
1098 (T&T Bell Laboratories.) 223.75 77.33 T
1099 72 72 540 720 C
1100 0 0 612 792 C
1101 72 126 225 126 2 L
1102 7 X
1103 0 K
1104 V
1105 0.5 H
1106 2 Z
1107 0 X
1108 N
1109 FMENDPAGE
1110 %%EndPage: "1" 4
1111 %%Page: "2" 4
1112 612 792 0 FMBEGINPAGE
1113 72 745.99 540 756 R
1114 7 X
1115 0 K
1116 V
1117 72 32.69 540 42.7 R
1118 V
1119 0 F
1120 0 X
1121 (Page 2 of 11) 479.71 34.7 T
1122 72 72 540 720 R
1123 7 X
1124 V
1125 0 X
1126 0.31 (Block Chaining, ) 72 712 P
1127 3 F
1128 0.31 (k) 154.25 712 P
1129 0 F
1130 0.31 (-bit Cipher Feed Back, and ) 159.58 712 P
1131 3 F
1132 0.31 (k) 293.71 712 P
1133 0 F
1134 0.31 (-bit Output Feed Back\051 as well as the Alternate ) 299.04 712 P
1135 3 F
1136 0.31 (k) 530.68 712 P
1137 0 F
1138 0.31 (-) 536.01 712 P
1139 -0.04 (bit Cipher Feed Back mode. Further) 72 692 P
1140 -0.04 (, ) 244.52 692 P
1141 3 F
1142 -0.04 (bdes) 250.48 692 P
1143 0 F
1144 -0.04 ( supports message authentication code generation based) 272.46 692 P
1145 (on both the Cipher Block Chaining mode and the ) 72 672 T
1146 3 F
1147 (k) 310.86 672 T
1148 0 F
1149 (-bit Cipher Feed Back mode.) 316.19 672 T
1150 0.07 (By default, ) 108 648 P
1151 3 F
1152 0.07 (bdes) 164.43 648 P
1153 0 F
1154 0.07 ( encrypts an input \336le using Cipher Block Chaining mode, and is invoked) 186.41 648 P
1155 -0.4 (as a \336lter) 72 628 P
1156 -0.4 (. The key may be speci\336ed either on the command line or may be typed to the prompt. So,) 114.51 628 P
1157 (if the input \336le ) 72 608 T
1158 7 F
1159 (inputf) 145.96 608 T
1160 (ile) 189.14 608 T
1161 0 F
1162 ( contains the message) 210.73 608 T
1163 6 F
1164 (a) 253.9 584 T
1165 8 F
1166 (z) 261.1 584 T
1167 6 F
1168 (test) 266.07 584 T
1169 8 F
1170 (z) 294.86 584 T
1171 6 F
1172 (message) 299.83 584 T
1173 9 F
1174 (\277) 350.21 584 T
1175 0 F
1176 (then the following command encrypts it using the key ) 72 560 T
1177 6 F
1178 (abcdefgh) 333.5 560 T
1179 0 F
1180 (:) 391.07 560 T
1181 6 F
1182 (bdes -k abcdefgh < ) 158.48 536 T
1183 7 F
1184 (inputf) 295.21 536 T
1185 (ile) 338.38 536 T
1186 6 F
1187 ( > ) 359.97 536 T
1188 7 F
1189 (outputf) 381.56 536 T
1190 (ile) 431.93 536 T
1191 0 F
1192 (The option ) 72 512 T
1193 4 F
1194 (-k) 127.3 512 T
1195 0 F
1196 ( indicates the next ar) 137.96 512 T
1197 (gument is the key) 237.01 512 T
1198 (. Now ) 321.17 512 T
1199 7 F
1200 (outputf) 353.48 512 T
1201 (ile) 403.86 512 T
1202 0 F
1203 ( contains) 425.45 512 T
1204 10 F
1205 (16 0e eb af 68 a0 d0 19 f1 a2 9b 31 0d 8a 01 c3) 136.89 488 T
1206 0 F
1207 0.06 (Other modes are speci\336ed using command-line options, as is control of the way the key is) 108 464 P
1208 (interpreted. The next sections contain several examples, and the Appendix has the manual page.) 72 444 T
1209 4 F
1210 (3. Keys and Parity) 72 412 T
1211 0 F
1212 0.58 (The key consists of 64 bits, and may be presented in any of hex, binary) 108 388 P
1213 0.58 (, or as a string of) 456.48 388 P
1214 5 F
1215 0.12 (ASCII) 72 368 P
1216 0 F
1217 0.14 ( characters. If the key is given in hex or binary) 98.1 368 P
1218 0.14 (, it is used as is with no changes. However) 322.21 368 P
1219 0.14 (, if) 526.53 368 P
1220 -0.27 (the key is given in ) 72 348 P
1221 5 F
1222 -0.23 (ASCII) 161.59 348 P
1223 0 F
1224 -0.27 (, a delicate problem arises: by convention, the parity bit is usually set to 0.) 187.69 348 P
1225 -0.47 (This high-order bit is generally ignored by applications; but the DES
1226 does not do so. Instead, it dis-) 72 328 P
1227 -0.14 (cards the low-order bit, ef) 72 308 P
1228 -0.14 (fectively reducing the size of the space of possible keys from 2) 195.44 308 P
1229 5 F
1230 -0.12 (56) 495.97 312.8 P
1231 0 F
1232 -0.14 ( to 2) 505.97 308 P
1233 5 F
1234 -0.12 (48) 527.01 312.8 P
1235 0 F
1236 -0.14 (.) 537 308 P
1237 -0.46 ( T) 108 284 P
1238 -0.46 (o preserve the size of the key space, the value of the parity bit must be related to the value) 117.03 284 P
1239 -0.09 (in the low-order bit, so the program sets the high-order bit to make each character in the key be of) 72 264 P
1240 -0.7 (odd parity) 72 244 P
1241 -0.7 (. \050Note that the initial value of the parity bit is ) 119.49 244 P
1242 3 F
1243 -0.7 (not) 334.99 244 P
1244 0 F
1245 -0.7 ( used in this computation.\051 For example,) 350.31 244 P
1246 (if the key is ) 72 224 T
1247 6 F
1248 (abcdefgh) 131.29 224 T
1249 0 F
1250 (, the actual key bits used are determined as follows:) 188.86 224 T
1251 5 F
1252 (ASCII) 99 200 T
1253 0 F
1254 ( key) 125.1 200 T
1255 6 F
1256 (a) 243 200 T
1257 (b) 279 200 T
1258 (c) 315 200 T
1259 (d) 351 200 T
1260 (e) 387 200 T
1261 (f) 423 200 T
1262 (g) 459 200 T
1263 (h) 495 200 T
1264 5 F
1265 (ASCII) 99 180 T
1266 0 F
1267 ( key bits \050hex\051) 125.1 180 T
1268 10 F
1269 (61) 243 180 T
1270 (62) 279 180 T
1271 (63) 315 180 T
1272 (64) 351 180 T
1273 (65) 387 180 T
1274 (66) 423 180 T
1275 (67) 459 180 T
1276 (68) 495 180 T
1277 0 F
1278 (parity) 99 160 T
1279 (odd) 243 160 T
1280 (odd) 279 160 T
1281 (even) 315 160 T
1282 (odd) 351 160 T
1283 (even) 387 160 T
1284 (even) 423 160 T
1285 (odd) 459 160 T
1286 (odd) 495 160 T
1287 (key bits used \050hex\051) 99 140 T
1288 10 F
1289 (61) 243 140 T
1290 (62) 279 140 T
1291 (e3) 315 140 T
1292 (64) 351 140 T
1293 (e5) 387 140 T
1294 (e6) 423 140 T
1295 (67) 459 140 T
1296 (68) 495 140 T
1297 0 F
1298 0.18 (This convention \050as opposed to requiring even parity) 108 120 P
1299 0.18 (, or simply copying the low-order bit) 362 120 P
1300 -0.41 (to the high-order bit\051 was chosen to provide compatibility with the encryption program ) 72 100 P
1301 3 F
1302 -0.41 (des) 486.77 100 P
1303 0 F
1304 -0.41 ( distrib-) 502.76 100 P
1305 -0.52 (uted by Sun Microsystems, Inc. [4]. Whether the key is entered on the command line or on the key-) 72 80 P
1306 FMENDPAGE
1307 %%EndPage: "2" 5
1308 %%Page: "3" 5
1309 612 792 0 FMBEGINPAGE
1310 72 745.99 540 756 R
1311 7 X
1312 0 K
1313 V
1314 72 32.69 540 42.7 R
1315 V
1316 0 F
1317 0 X
1318 (Page 3 of 11) 479.71 34.7 T
1319 72 72 540 720 R
1320 7 X
1321 V
1322 0 X
1323 1.89 (board, by default it is processed into the same key schedule generated by Sun\325) 72 712 P
1324 1.89 (s ) 471.02 712 P
1325 3 F
1326 1.89 (des) 480.58 712 P
1327 0 F
1328 1.89 (, so \336les) 496.56 712 P
1329 (encrypted on a Sun can be decrypted using ) 72 692 T
1330 3 F
1331 (bdes) 280.51 692 T
1332 0 F
1333 ( \050and vice versa\051.) 302.49 692 T
1334 -0.3 (If the user does not wish to use the Sun convention, the option \320) 108 668 P
1335 4 F
1336 -0.3 (p) 411.9 668 P
1337 0 F
1338 -0.3 ( will disable the parity bit) 418.57 668 P
1339 -0.62 (changing; with it, the parity bit is that of the character typed. This
1340 is useful when the key is a known) 72 648 P
1341 5 F
1342 (ASCII) 72 628 T
1343 0 F
1344 ( string and the \336le was encrypted on a system which does not alter parity bits.) 98.1 628 T
1345 -0.24 (A key may be represented as a bit vector) 108 604 P
1346 -0.24 (, rather than an ) 300.74 604 P
1347 5 F
1348 -0.2 (ASCII) 374.7 604 P
1349 0 F
1350 -0.24 ( string, in one of two ways. It) 400.8 604 P
1351 0.19 (may be represented as a string of up to 16 hexadecimal digits; if fewer than 16 are given, the key) 72 584 P
1352 0.16 (is right \336lled with 0 bits. Or) 72 564 P
1353 0.16 (, it may be represented as a string of up to 64 binary digits, and again) 206.11 564 P
1354 0.15 (if fewer than 64 are given, the key is right-\336lled with 0 bits. Bit
1355 vector keys must be given on the) 72 544 P
1356 0.51 (command line, and must begin with the characters ) 72 524 P
1357 6 F
1358 1.24 (0x) 320.28 524 P
1359 0 F
1360 0.51 ( or ) 334.67 524 P
1361 6 F
1362 1.24 (0X) 351.69 524 P
1363 0 F
1364 0.51 ( \050for hexadecimal\051 or ) 366.08 524 P
1365 6 F
1366 1.24 (0b) 472.71 524 P
1367 0 F
1368 0.51 ( or ) 487.1 524 P
1369 6 F
1370 1.24 (0B) 504.12 524 P
1371 0 F
1372 0.51 ( \050for) 518.51 524 P
1373 (binary\051. For example, all of the following strings generate the same key schedule:) 72 504 T
1374 5 F
1375 (ASCII) 72 480 T
1376 0 F
1377 ( key) 98.1 480 T
1378 6 F
1379 (abcdefgh) 180 480 T
1380 0 F
1381 (hexadecimal key) 72 460 T
1382 6 F
1383 (0x6162e364e5e66768) 180 460 T
1384 0 F
1385 (binary key) 72 440 T
1386 6 F
1387 (0b0110000101100010111000110110100011100101111000-) 180 440 T
1388 (1100110011101101000) 180 420 T
1389 0 F
1390 -0.14 ( Note that giving the key on the command line as ) 108 396 P
1391 6 F
1392 -0.34 (0x6162636465666768) 345.27 396 P
1393 0 F
1394 -0.14 ( will ) 474.8 396 P
1395 3 F
1396 -0.14 (not) 499.17 396 P
1397 0 F
1398 -0.14 ( reset) 514.5 396 P
1399 0.25 (the parity bits, because it is interpreted as a sequence of hex digits, not ) 72 376 P
1400 5 F
1401 0.21 (ASCII) 416.58 376 P
1402 0 F
1403 0.25 ( characters. The dif-) 442.68 376 P
1404 0.69 (ference in interpretation is that here the user can specify all bits of the key exactly) 72 356 P
1405 0.69 (, whereas \050on) 474.34 356 P
1406 0.25 (most terminals\051 it is not possible to control how the parity bit of ) 72 336 P
1407 5 F
1408 0.21 (ASCII) 384.76 336 P
1409 0 F
1410 0.25 ( characters is set. On some) 410.85 336 P
1411 0.36 (systems, it is possible to use a \322Meta\323 key to set the parity bit for an ) 72 316 P
1412 5 F
1413 0.3 (ASCII) 407.23 316 P
1414 0 F
1415 0.36 ( character; should this) 433.33 316 P
1416 -0.3 (be the case and the user desire ) 72 296 P
1417 3 F
1418 -0.3 (bdes) 218.09 296 P
1419 0 F
1420 -0.3 ( not to reset the parity bit, the option ) 240.07 296 P
1421 4 F
1422 -0.3 (\320p) 415.25 296 P
1423 0 F
1424 -0.3 ( will force the parity bit) 427.92 296 P
1425 (to be used as typed.) 72 276 T
1426 4 F
1427 (4. Encryption Output Repr) 72 244 T
1428 (esentation) 211.05 244 T
1429 0 F
1430 0.01 (All modes of the DES output ciphertext in blocks; the size of the block is 64 bits \0508 bytes\051) 108 220 P
1431 -0.25 (for ECB and CBC modes, and ) 72 200 P
1432 3 F
1433 -0.25 (k) 218.74 200 P
1434 0 F
1435 -0.25 ( bits for the ) 224.07 200 P
1436 3 F
1437 -0.25 (k) 281.02 200 P
1438 0 F
1439 -0.25 (-bit CFB and OFB modes, and there are as many out-) 286.35 200 P
1440 -0.5 (put blocks as input blocks. However) 72 180 P
1441 -0.5 (, as the length of the input is usually not a multiple of the block) 243.55 180 P
1442 -0.35 (size, some padding is necessary; but as padding must be done by appending characters, these char-) 72 160 P
1443 0.29 (acters must be distinguished from the input characters somehow) 72 140 P
1444 0.29 (. The mechanism used is that the) 381.35 140 P
1445 0.31 (last character of the \050decrypted\051 last block is the
1446 \050integer\051 number of characters from the input in) 72 120 P
1447 (the last block.) 72 100 T
1448 FMENDPAGE
1449 %%EndPage: "3" 6
1450 %%Page: "4" 6
1451 612 792 0 FMBEGINPAGE
1452 72 745.99 540 756 R
1453 7 X
1454 0 K
1455 V
1456 72 32.69 540 42.7 R
1457 V
1458 0 F
1459 0 X
1460 (Page 4 of 11) 479.71 34.7 T
1461 72 72 540 720 R
1462 7 X
1463 V
1464 0 X
1465 -0.59 (For example, suppose ) 108 712 P
1466 7 F
1467 -1.41 (inputf) 214.16 712 P
1468 -1.41 (ile) 257.34 712 P
1469 0 F
1470 -0.59 ( contains \322) 278.93 712 P
1471 6 F
1472 -1.41 (This) 329.04 712 P
1473 8 F
1474 -0.65 (z) 357.83 712 P
1475 6 F
1476 -1.41 (is) 362.8 712 P
1477 8 F
1478 -0.65 (z) 377.2 712 P
1479 6 F
1480 -1.41 (a) 382.17 712 P
1481 8 F
1482 -0.65 (z) 389.37 712 P
1483 6 F
1484 -1.41 (test) 394.35 712 P
1485 9 F
1486 -0.59 (\277) 423.13 712 P
1487 0 F
1488 -0.59 (\323, and it is encrypted in) 431.02 712 P
1489 (CBC mode using the key \322) 72 692 T
1490 6 F
1491 (abcdef#@) 200.93 692 T
1492 0 F
1493 (\323 and the initialization vector ) 258.5 692 T
1494 6 F
1495 (0x0) 401.4 692 T
1496 0 F
1497 (; the command is) 422.99 692 T
1498 6 F
1499 (bdes -k abcdef#@ < ) 158.48 668 T
1500 7 F
1501 (inputf) 295.21 668 T
1502 (ile) 338.38 668 T
1503 6 F
1504 ( > ) 359.97 668 T
1505 7 F
1506 (outputf) 381.56 668 T
1507 (ile) 431.93 668 T
1508 0 F
1509 (as CBC is the default encryption mode and ) 72 644 T
1510 6 F
1511 (0x0) 281.2 644 T
1512 0 F
1513 ( the default initialization vector:) 302.79 644 T
1514 (text) 72 620 T
1515 6 F
1516 (T) 117 620 T
1517 (h) 144 620 T
1518 (i) 171 620 T
1519 (s) 198 620 T
1520 8 F
1521 (z) 225 620 T
1522 6 F
1523 (i) 252 620 T
1524 (s) 279 620 T
1525 8 F
1526 (z) 306 620 T
1527 6 F
1528 (a) 333 620 T
1529 8 F
1530 (z) 360 620 T
1531 6 F
1532 (t) 387 620 T
1533 (e) 414 620 T
1534 (s) 441 620 T
1535 (t) 468 620 T
1536 9 F
1537 (\277) 495 620 T
1538 0 F
1539 (hex) 72 600 T
1540 10 F
1541 (54) 117 600 T
1542 (68) 144 600 T
1543 (69) 171 600 T
1544 (73) 198 600 T
1545 (20) 225 600 T
1546 (69) 252 600 T
1547 (73) 279 600 T
1548 (20) 306 600 T
1549 (61) 333 600 T
1550 (20) 360 600 T
1551 (74) 387 600 T
1552 (65) 414 600 T
1553 (73) 441 600 T
1554 (74) 468 600 T
1555 (0a) 495 600 T
1556 0 F
1557 (input) 72 580 T
1558 10 F
1559 (54) 117 580 T
1560 (68) 144 580 T
1561 (69) 171 580 T
1562 (73) 198 580 T
1563 (20) 225 580 T
1564 (69) 252 580 T
1565 (73) 279 580 T
1566 (20) 306 580 T
1567 (61) 333 580 T
1568 (20) 360 580 T
1569 (74) 387 580 T
1570 (65) 414 580 T
1571 (73) 441 580 T
1572 (74) 468 580 T
1573 (0a) 495 580 T
1574 (07) 522 580 T
1575 0 F
1576 (output) 72 560 T
1577 10 F
1578 (a5) 117 560 T
1579 (5f) 144 560 T
1580 (81) 171 560 T
1581 (53) 198 560 T
1582 (51) 225 560 T
1583 (98) 252 560 T
1584 (47) 279 560 T
1585 (02) 306 560 T
1586 (db) 333 560 T
1587 (5a) 360 560 T
1588 (c5) 387 560 T
1589 (fe) 414 560 T
1590 (50) 441 560 T
1591 (3d) 468 560 T
1592 (40) 495 560 T
1593 (ce) 522 560 T
1594 0 F
1595 0.04 (Notice that the text is 15 characters long, so there are 7 bytes following the last full block.) 108 540 P
1596 3 F
1597 0.22 (Bdes) 72 520 P
1598 0 F
1599 0.22 ( pads this to a full block by appending one byte containing the ) 95.32 520 P
1600 5 F
1601 0.19 (ASCII) 399.67 520 P
1602 0 F
1603 0.22 ( character with numeric) 425.77 520 P
1604 (value 7 \050the ) 72 500 T
1605 5 F
1606 (ASCII) 131.62 500 T
1607 0 F
1608 ( character <) 157.71 500 T
1609 5 F
1610 (BEL) 214.42 500 T
1611 0 F
1612 (>\051. The result is then encrypted.) 233.3 500 T
1613 0.44 (As another example, suppose ) 108 476 P
1614 7 F
1615 1.07 (inputf) 253.34 476 P
1616 1.07 (ile) 296.52 476 P
1617 0 F
1618 0.44 ( contains \322) 318.11 476 P
1619 6 F
1620 1.07 (test) 370.29 476 P
1621 0 F
1622 0.44 (\323, and it is encrypted in ECB) 399.08 476 P
1623 (mode using the key \322) 72 456 T
1624 6 F
1625 (abcdef#@) 173.93 456 T
1626 0 F
1627 (\323; the command is) 231.5 456 T
1628 6 F
1629 (bdes -b \320k abcdef#@ < ) 147.69 432 T
1630 7 F
1631 (inputf) 306 432 T
1632 (ile) 349.18 432 T
1633 6 F
1634 ( > ) 370.76 432 T
1635 7 F
1636 (outputf) 392.35 432 T
1637 (ile) 442.73 432 T
1638 0 F
1639 (because the option ) 72 408 T
1640 4 F
1641 (\320b) 164.26 408 T
1642 0 F
1643 ( signi\336es ECB mode:) 176.93 408 T
1644 (text) 72 384 T
1645 6 F
1646 (t) 144 384 T
1647 (e) 171 384 T
1648 (s) 198 384 T
1649 (t) 225 384 T
1650 0 F
1651 (hex) 72 364 T
1652 10 F
1653 (74) 144 364 T
1654 (65) 171 364 T
1655 (73) 198 364 T
1656 (74) 225 364 T
1657 0 F
1658 (input) 72 344 T
1659 10 F
1660 (74) 144 344 T
1661 (65) 171 344 T
1662 (73) 198 344 T
1663 (74) 225 344 T
1664 (00) 252 344 T
1665 (00) 279 344 T
1666 (00) 306 344 T
1667 (04) 333 344 T
1668 0 F
1669 (output) 72 324 T
1670 10 F
1671 (0d) 144 324 T
1672 (8a) 171 324 T
1673 (6e) 198 324 T
1674 (57) 225 324 T
1675 (9c) 252 324 T
1676 (8f) 279 324 T
1677 (27) 306 324 T
1678 (5d) 333 324 T
1679 0 F
1680 -0.31 (Finally) 108 304 P
1681 -0.31 (, if the length of the message is indeed a multiple of the block size, an extra block of) 141.21 304 P
1682 0.83 (all 0 bits is added. Suppose ) 72 284 P
1683 7 F
1684 1.99 (inputf) 210.57 284 P
1685 1.99 (ile) 253.74 284 P
1686 0 F
1687 0.83 ( contains \322) 275.33 284 P
1688 6 F
1689 1.99 (test) 328.28 284 P
1690 9 F
1691 0.83 (\277) 357.07 284 P
1692 0 F
1693 0.83 (\323, and it is encrypted in 40-bit CFB) 364.96 284 P
1694 1.51 (mode using the key \322) 72 264 P
1695 6 F
1696 3.62 (abcdef#@) 179.96 264 P
1697 0 F
1698 1.51 (\323 and the initialization vector ) 237.53 264 P
1699 6 F
1700 3.62 (0x0123456789abcdef) 387.97 264 P
1701 0 F
1702 1.51 (; the) 517.5 264 P
1703 (command is) 72 244 T
1704 6 F
1705 -0.99 (bdes -f40 -v0x0123456789abcdef -kabcdef#@ < ) 72 220 P
1706 7 F
1707 -0.99 (inputf) 383.67 220 P
1708 -0.99 (ile) 426.85 220 P
1709 6 F
1710 -0.99 ( > ) 448.43 220 P
1711 7 F
1712 -0.99 (outputf) 468.04 220 P
1713 -0.99 (ile) 518.41 220 P
1714 0 F
1715 0.16 (because the option ) 72 196 P
1716 4 F
1717 0.16 (\320f40 ) 164.75 196 P
1718 0 F
1719 0.16 (signi\336es 40-bit CFB mode, and ) 189.89 196 P
1720 4 F
1721 0.16 (-v0x01234566789abcdef) 343.96 196 P
1722 0 F
1723 0.16 ( sets the initial-) 465.89 196 P
1724 (ization vector \050note that spaces between the option and its ar) 72 176 T
1725 (gument are optional\051:) 361.57 176 T
1726 (text) 72 152 T
1727 6 F
1728 (t) 144 152 T
1729 (e) 171 152 T
1730 (s) 198 152 T
1731 (t) 225 152 T
1732 9 F
1733 (\277) 252 152 T
1734 0 F
1735 (hex) 72 132 T
1736 10 F
1737 (74) 144 132 T
1738 (65) 171 132 T
1739 (73) 198 132 T
1740 (74) 225 132 T
1741 (0a) 252 132 T
1742 0 F
1743 (input) 72 112 T
1744 10 F
1745 (74) 144 112 T
1746 (65) 171 112 T
1747 (73) 198 112 T
1748 (74) 225 112 T
1749 (0a) 252 112 T
1750 (00) 279 112 T
1751 (00) 306 112 T
1752 (00) 333 112 T
1753 (00) 360 112 T
1754 (00) 387 112 T
1755 0 F
1756 (output) 72 92 T
1757 10 F
1758 (e2) 144 92 T
1759 (c2) 171 92 T
1760 (69) 198 92 T
1761 (a4) 225 92 T
1762 (5b) 252 92 T
1763 (3c) 279 92 T
1764 (3d) 306 92 T
1765 (b3) 333 92 T
1766 (f5) 360 92 T
1767 (3c) 387 92 T
1768 FMENDPAGE
1769 %%EndPage: "4" 7
1770 1 12 /Times-BoldItalic FMDEFINEFONT
1771 2 14 /Symbol FMDEFINEFONT
1772 %%Page: "5" 7
1773 612 792 0 FMBEGINPAGE
1774 72 745.99 540 756 R
1775 7 X
1776 0 K
1777 V
1778 72 32.69 540 42.7 R
1779 V
1780 0 F
1781 0 X
1782 (Page 5 of 11) 479.71 34.7 T
1783 72 72 540 720 R
1784 7 X
1785 V
1786 0 X
1787 (Note here the block size is 40 bits \0505 bytes\051, not 64 bits \0508 bytes\051.) 108 712 T
1788 -0.4 (This technique allows complete compatibility with Sun\325) 108 688 P
1789 -0.4 (s ) 374.11 688 P
1790 3 F
1791 -0.4 (des) 381.37 688 P
1792 0 F
1793 -0.4 ( program. In Sun\325) 397.36 688 P
1794 -0.4 (s implemen-) 480.77 688 P
1795 0.02 (tation, padding is done with random bytes rather than bytes containing all zero bits. Cryptograph-) 72 668 P
1796 0.85 (ically) 72 648 P
1797 0.85 (, this makes no dif) 97.87 648 P
1798 0.85 (ference, as the DES is a suf) 189.32 648 P
1799 0.85 (\336ciently good random cipher to obscure the) 325.74 648 P
1800 (input \050see for example [2], Chapter 6\051, and known plaintext attacks are very dif) 72 628 T
1801 (\336cult [1].) 451.82 628 T
1802 4 F
1803 (5. Differ) 72 596 T
1804 (ences Between the Standard CFB and OFB Modes and ) 114.41 596 T
1805 1 F
1806 (bdes) 397.26 596 T
1807 0 F
1808 -0.11 (The UNIX operating system treats all \336les as streams of 8-bit bytes. In order to implement) 108 572 P
1809 -0.08 (the CFB and OFB modes properly) 72 552 P
1810 -0.08 (, it would be necessary to read ) 235.74 552 P
1811 3 F
1812 -0.08 (k) 383.74 552 P
1813 0 F
1814 -0.08 ( bits from the \336le, where ) 389.07 552 P
1815 3 F
1816 -0.08 (k) 509.51 552 P
1817 0 F
1818 -0.08 ( is an) 514.84 552 P
1819 0.98 (integer between 1 and 64 inclusive. However) 72 532 P
1820 0.98 (, this would require considerable buf) 294.22 532 P
1821 0.98 (fering and be) 474.77 532 P
1822 0.23 (quite inef) 72 512 P
1823 0.23 (\336cient and prohibitively slow) 117.65 512 P
1824 0.23 (. For these reasons, the current implementation of ) 258.48 512 P
1825 3 F
1826 0.23 (bdes) 501.48 512 P
1827 0 F
1828 0.23 ( re-) 523.46 512 P
1829 0.47 (quires that ) 72 492 P
1830 3 F
1831 0.47 (k) 126.23 492 P
1832 0 F
1833 0.47 ( be a multiple of 8, so that an integral number of bytes will always be read from the) 131.56 492 P
1834 (\336le. Other than this change, this mode is implemented as described in [3].) 72 472 T
1835 -0.58 (A similar observation holds for the alternate CFB mode described in [3]. Here, only the low) 108 448 P
1836 0.23 (7 bits of each byte are signi\336cant, and hence the parameter ) 72 428 P
1837 3 F
1838 0.23 (k) 358.95 428 P
1839 0 F
1840 0.23 ( is an integer from 1 to 56 inclusive;) 364.28 428 P
1841 (bdes requires k to be a multiple of 7. The high-order bit is retained for encryption and decryption,) 72 408 T
1842 (but output \050whether from encryption or decryption\051 always has the high-order bit set to zero.) 72 388 T
1843 4 F
1844 (6. Message Authentication Code Modes) 72 356 T
1845 0 F
1846 0.57 (The Data Encryption Standard provides two modes of authentication, each providing be-) 108 332 P
1847 1.27 (tween 1 and 64 bits of authentication data. In both cases an ) 72 312 P
1848 3 F
1849 1.27 (n) 373.32 312 P
1850 0 F
1851 1.27 (-bit message authentication code) 379.32 312 P
1852 0.62 (\050MAC\051 is generated, where 1) 72 292 P
1853 2 F
1854 0.73 ( ) 214.71 292 P
1855 9 F
1856 0.62 (\243) 218.94 292 P
1857 0 F
1858 0.62 ( ) 225.52 292 P
1859 3 F
1860 0.62 (n) 229.15 292 P
1861 0 F
1862 0.62 ( ) 235.14 292 P
1863 9 F
1864 0.62 (\243) 238.76 292 P
1865 0 F
1866 0.62 ( 64. The \336rst is based on the CBC encryption mode, and the) 245.35 292 P
1867 (second on CFB mode. Both work the same.) 72 272 T
1868 0.13 (First, the \336le is padded to a multiple of the block size by appending enough zero bits. It is) 108 248 P
1869 -0.16 (then encrypted using the standard CBC \050or CFB\051 algorithm, but
1870 all encrypted text is discarded ex-) 72 228 P
1871 -0.44 (cept for the last block. The ) 72 208 P
1872 3 F
1873 -0.44 (n) 200.9 208 P
1874 0 F
1875 -0.44 ( leading bits of the last block are used as the MAC. Note that the block) 206.9 208 P
1876 (size constrains the number of bits available as the MAC.) 72 188 T
1877 0.71 (The implementation allows the user to specify that the MAC is to be computed in either) 108 164 P
1878 -0.01 (CBC or CFB mode, and the user can specify any number of bits from 1 to 64 inclusive. However) 72 144 P
1879 -0.01 (,) 537 144 P
1880 -0.11 (because the UNIX operating system can only output bits in multiples of 8, if the number of bits of) 72 124 P
1881 -0.08 (MAC is not a multiple of 8, the MAC will be right-padded with the minimum number of zero bits) 72 104 P
1882 -0.31 (necessary to make the MAC length be a multiple of 8. However) 72 84 P
1883 -0.31 (, note that as the standard \050[3], Ap-) 374.6 84 P
1884 FMENDPAGE
1885 %%EndPage: "5" 8
1886 %%Page: "6" 8
1887 612 792 0 FMBEGINPAGE
1888 72 745.99 540 756 R
1889 7 X
1890 0 K
1891 V
1892 72 32.69 540 42.7 R
1893 V
1894 0 F
1895 0 X
1896 (Page 6 of 11) 479.71 34.7 T
1897 72 72 540 720 R
1898 7 X
1899 V
1900 0 X
1901 -0.14 (pendix F\051 requires an incomplete \336nal block be right-padded with
1902 zeroes, the technique of forcing) 72 712 P
1903 (the last octet to contain the number of bytes in the message is ) 72 692 T
1904 3 F
1905 (not) 369.47 692 T
1906 0 F
1907 ( used here.) 384.8 692 T
1908 -0.39 (For example, suppose ) 108 668 P
1909 7 F
1910 -0.94 (inputf) 214.76 668 P
1911 -0.94 (ile) 257.93 668 P
1912 0 F
1913 -0.39 ( contains \322) 279.52 668 P
1914 6 F
1915 -0.94 (This) 330.04 668 P
1916 8 F
1917 -0.43 (z) 358.82 668 P
1918 6 F
1919 -0.94 (is) 363.8 668 P
1920 8 F
1921 -0.43 (z) 378.19 668 P
1922 6 F
1923 -0.94 (a) 383.17 668 P
1924 8 F
1925 -0.43 (z) 390.36 668 P
1926 6 F
1927 -0.94 (test) 395.34 668 P
1928 9 F
1929 -0.39 (\277) 424.13 668 P
1930 0 F
1931 -0.39 (\323, and a 64-bit MAC is) 432.02 668 P
1932 -0.73 (to be generated using CBC mode, the key \322) 72 648 P
1933 6 F
1934 -1.74 (abcdef#@) 274.39 648 P
1935 0 F
1936 -0.73 (\323 and the initialization vector ) 331.96 648 P
1937 6 F
1938 -1.74 (0x0) 471.23 648 P
1939 0 F
1940 -0.73 (; the com-) 492.82 648 P
1941 (mand is) 72 628 T
1942 6 F
1943 (bdes -m 64 -k abcdef#@ < ) 136.89 604 T
1944 7 F
1945 (inputf) 316.79 604 T
1946 (ile) 359.97 604 T
1947 6 F
1948 ( > ) 381.56 604 T
1949 7 F
1950 (outputf) 403.15 604 T
1951 (ile) 453.52 604 T
1952 0 F
1953 (as CBC is the default encryption mode and ) 72 580 T
1954 6 F
1955 (0x0) 281.2 580 T
1956 0 F
1957 ( the default initialization vector:) 302.79 580 T
1958 (text) 72 556 T
1959 6 F
1960 (T) 117 556 T
1961 (h) 144 556 T
1962 (i) 171 556 T
1963 (s) 198 556 T
1964 8 F
1965 (z) 225 556 T
1966 6 F
1967 (i) 252 556 T
1968 (s) 279 556 T
1969 8 F
1970 (z) 306 556 T
1971 6 F
1972 (a) 333 556 T
1973 8 F
1974 (z) 360 556 T
1975 6 F
1976 (t) 387 556 T
1977 (e) 414 556 T
1978 (s) 441 556 T
1979 (t) 468 556 T
1980 9 F
1981 (\277) 495 556 T
1982 0 F
1983 (hex) 72 536 T
1984 10 F
1985 (54) 117 536 T
1986 (68) 144 536 T
1987 (69) 171 536 T
1988 (73) 198 536 T
1989 (20) 225 536 T
1990 (69) 252 536 T
1991 (73) 279 536 T
1992 (20) 306 536 T
1993 (61) 333 536 T
1994 (20) 360 536 T
1995 (74) 387 536 T
1996 (65) 414 536 T
1997 (73) 441 536 T
1998 (74) 468 536 T
1999 (0a) 495 536 T
2000 0 F
2001 (input) 72 516 T
2002 10 F
2003 (54) 117 516 T
2004 (68) 144 516 T
2005 (69) 171 516 T
2006 (73) 198 516 T
2007 (20) 225 516 T
2008 (69) 252 516 T
2009 (73) 279 516 T
2010 (20) 306 516 T
2011 (61) 333 516 T
2012 (20) 360 516 T
2013 (74) 387 516 T
2014 (65) 414 516 T
2015 (73) 441 516 T
2016 (74) 468 516 T
2017 (0a) 495 516 T
2018 (00) 522 516 T
2019 0 F
2020 (output) 72 496 T
2021 10 F
2022 (43) 117 496 T
2023 (18) 144 496 T
2024 (de) 171 496 T
2025 (74) 198 496 T
2026 (24) 225 496 T
2027 (a9) 252 496 T
2028 (65) 279 496 T
2029 (d1) 306 496 T
2030 0 F
2031 0.04 (Notice that the text is 15 characters long, so there are 7 bytes following the last full block.) 108 476 P
2032 3 F
2033 (Bdes) 72 456 T
2034 0 F
2035 ( pads this to a full block by appending a zero-\336lled byte. The result is then encrypted and the) 95.32 456 T
2036 (last block of output is used as the MAC.) 72 436 T
2037 0.06 (As another example, suppose we used the same text, and wanted a 36-bit MAC to be gen-) 108 412 P
2038 6.91 (erated using 40-bit CFB mode, the key \322) 72 392 P
2039 6 F
2040 16.58 (abcdef#@) 314.9 392 P
2041 0 F
2042 6.91 (\323 and the initialization vector) 372.47 392 P
2043 6 F
2044 (0x0123456789abcdef) 72 372 T
2045 0 F
2046 (; the command is) 201.53 372 T
2047 6 F
2048 (bdes -m 36 -f 40 -v 0x0123456789abcdef < ) 79.32 348 T
2049 7 F
2050 (inputf) 374.36 348 T
2051 (ile) 417.54 348 T
2052 6 F
2053 ( > ) 439.13 348 T
2054 7 F
2055 (outputf) 460.71 348 T
2056 (ile) 511.09 348 T
2057 0 F
2058 -0.19 (where ) 72 324 P
2059 4 F
2060 -0.19 (\320m 36) 104.11 324 P
2061 0 F
2062 -0.19 ( is the option to generate a 36-bit MAC, ) 134.91 324 P
2063 4 F
2064 -0.19 (\320f 40) 327.79 324 P
2065 0 F
2066 -0.19 ( indicates 40-bit CFB is to be used, and) 352.58 324 P
2067 4 F
2068 -0.31 (\320v 0x123456789abcdef) 72 304 P
2069 0 F
2070 -0.31 ( sets the initialization vector) 186.62 304 P
2071 -0.31 (. Note that, as the key is not given on the com-) 319.95 304 P
2072 (mand line, the user will be prompted for it. It gives:) 72 284 T
2073 (text) 72 260 T
2074 6 F
2075 (T) 117 260 T
2076 (h) 144 260 T
2077 (i) 171 260 T
2078 (s) 198 260 T
2079 8 F
2080 (z) 225 260 T
2081 6 F
2082 (i) 252 260 T
2083 (s) 279 260 T
2084 8 F
2085 (z) 306 260 T
2086 6 F
2087 (a) 333 260 T
2088 8 F
2089 (z) 360 260 T
2090 6 F
2091 (t) 387 260 T
2092 (e) 414 260 T
2093 (s) 441 260 T
2094 (t) 468 260 T
2095 9 F
2096 (\277) 495 260 T
2097 0 F
2098 (hex) 72 240 T
2099 10 F
2100 (54) 117 240 T
2101 (68) 144 240 T
2102 (69) 171 240 T
2103 (73) 198 240 T
2104 (20) 225 240 T
2105 (69) 252 240 T
2106 (73) 279 240 T
2107 (20) 306 240 T
2108 (61) 333 240 T
2109 (20) 360 240 T
2110 (74) 387 240 T
2111 (65) 414 240 T
2112 (73) 441 240 T
2113 (74) 468 240 T
2114 (0a) 495 240 T
2115 0 F
2116 (input) 72 220 T
2117 10 F
2118 (54) 117 220 T
2119 (68) 144 220 T
2120 (69) 171 220 T
2121 (73) 198 220 T
2122 (20) 225 220 T
2123 (69) 252 220 T
2124 (73) 279 220 T
2125 (20) 306 220 T
2126 (61) 333 220 T
2127 (20) 360 220 T
2128 (74) 387 220 T
2129 (65) 414 220 T
2130 (73) 441 220 T
2131 (74) 468 220 T
2132 (0a) 495 220 T
2133 0 F
2134 (output) 72 200 T
2135 10 F
2136 (2b) 117 200 T
2137 (18) 144 200 T
2138 (68) 171 200 T
2139 (2d) 198 200 T
2140 (60) 225 200 T
2141 0 F
2142 0.19 (Note that the MAC is padded on the right by four zero bits to produce \336ve characters that) 108 180 P
2143 (can be output.) 72 160 T
2144 4 F
2145 (7. Differ) 72 128 T
2146 (ences Between ) 114.41 128 T
2147 1 F
2148 (bdes) 191.01 128 T
2149 4 F
2150 ( and Sun\325) 212.99 128 T
2151 (s DES Implementation) 261.88 128 T
2152 0 F
2153 0.02 (The program ) 108 104 P
2154 3 F
2155 0.02 (bdes) 173.33 104 P
2156 0 F
2157 0.02 ( is designed to be completely compatible with Sun Microsystems, Inc.\325) 195.31 104 P
2158 0.02 (s) 535.33 104 P
2159 0.57 (implementation of the Data Encryption Standard, called ) 72 84 P
2160 3 F
2161 0.57 (des) 347.14 84 P
2162 0 F
2163 0.57 ( and described in [4]. Thus, \336les en-) 363.13 84 P
2164 FMENDPAGE
2165 %%EndPage: "6" 9
2166 %%Page: "7" 9
2167 612 792 0 FMBEGINPAGE
2168 72 745.99 540 756 R
2169 7 X
2170 0 K
2171 V
2172 72 32.69 540 42.7 R
2173 V
2174 0 F
2175 0 X
2176 (Page 7 of 11) 479.71 34.7 T
2177 72 72 540 720 R
2178 7 X
2179 V
2180 0 X
2181 0.44 (crypted using ) 72 712 P
2182 3 F
2183 0.44 (des) 140.84 712 P
2184 0 F
2185 0.44 ( can be decrypted using ) 156.83 712 P
2186 3 F
2187 0.44 (bdes) 275.29 712 P
2188 0 F
2189 0.44 (, and vice versa, provided modes common to both) 297.27 712 P
2190 -0.34 (are used. However) 72 692 P
2191 -0.34 (, ) 160.41 692 P
2192 3 F
2193 -0.34 (bdes) 166.06 692 P
2194 0 F
2195 -0.34 ( does not allow \336les to be named on the command line, nor does it support) 188.05 692 P
2196 -0.68 (hardware devices \050and so the ) 72 672 P
2197 4 F
2198 -0.68 (-s) 210.83 672 P
2199 0 F
2200 -0.68 ( and ) 219.49 672 P
2201 4 F
2202 -0.68 (-f) 241.45 672 P
2203 0 F
2204 -0.68 ( options of Sun\325) 249.44 672 P
2205 -0.68 (s ) 323.71 672 P
2206 3 F
2207 -0.68 (des) 330.7 672 P
2208 0 F
2209 -0.68 ( are not available\051. Further) 346.69 672 P
2210 -0.68 (, as encryption) 471.07 672 P
2211 -0.05 (is the default, the Sun ) 72 652 P
2212 3 F
2213 -0.05 (des) 179.01 652 P
2214 0 F
2215 -0.05 ( ) 195 652 P
2216 4 F
2217 -0.05 (-e) 197.95 652 P
2218 0 F
2219 -0.05 ( option is not recognized. As the manual page to ) 207.27 652 P
2220 3 F
2221 -0.05 (bdes) 441.6 652 P
2222 0 F
2223 -0.05 ( is in the appen-) 463.59 652 P
2224 (dix, these dif) 72 632 T
2225 (ferences will not be elaborated upon further) 134.08 632 T
2226 (.) 343.24 632 T
2227 0.44 (Sun\325) 108 608 P
2228 0.44 (s ) 130 608 P
2229 3 F
2230 0.44 (des) 138.1 608 P
2231 0 F
2232 0.44 ( supports the use of special-purpose hardware to encrypt and decrypt. Although) 154.09 608 P
2233 3 F
2234 1.33 (bdes) 72 588 P
2235 0 F
2236 1.33 ( does not directly support the use of such hardware, it uses the library routine ) 93.98 588 P
2237 3 F
2238 1.33 (encrypt) 487.05 588 P
2239 0 F
2240 1.33 (\0503\051,) 523.02 588 P
2241 -0.09 (which may) 72 568 P
2242 -0.09 (. Hardware support was not included directly to support as lar) 124.1 568 P
2243 -0.09 (ge a number of platforms) 419.11 568 P
2244 (as possible with installers needing to know as little about the hardware as possible.) 72 548 T
2245 -0.08 (Sun\325) 108 524 P
2246 -0.08 (s ) 130 524 P
2247 3 F
2248 -0.08 (des) 137.58 524 P
2249 0 F
2250 -0.08 ( supports only the CBC and ECB encryption modes; ) 153.57 524 P
2251 3 F
2252 -0.08 (bdes) 407.07 524 P
2253 0 F
2254 -0.08 ( supports all modes de-) 429.05 524 P
2255 0.26 (scribed in [3] \050although CFB and OFB are not completely supported\051 as well as both CBC-based) 72 504 P
2256 (and CFB-based MACs.) 72 484 T
2257 0.15 (Although input with length not a multiple of the block size is handled in the same way by) 108 460 P
2258 -0.47 (both ) 72 440 P
2259 3 F
2260 -0.47 (des) 95.85 440 P
2261 0 F
2262 -0.47 ( and ) 111.84 440 P
2263 3 F
2264 -0.47 (bdes) 134.21 440 P
2265 0 F
2266 -0.47 (, dif) 156.19 440 P
2267 -0.47 (ferent values of the padding bytes are used in all but the last byte of the input.) 174.82 440 P
2268 (Where ) 72 420 T
2269 3 F
2270 (bdes) 106.96 420 T
2271 0 F
2272 ( puts zero bytes, ) 128.94 420 T
2273 3 F
2274 (des) 209.89 420 T
2275 0 F
2276 ( puts bytes containing random values. The reason for Sun\325) 225.87 420 T
2277 (s doing) 505.02 420 T
2278 0.47 (so is to prevent a known plaintext attack on the \336le should an
2279 attacker determine that the input\325) 72 400 P
2280 0.47 (s) 535.33 400 P
2281 -0.29 (length were a multiple of the block size. W) 72 380 P
2282 -0.29 (ith ) 276.05 380 P
2283 3 F
2284 -0.29 (bdes) 291.43 380 P
2285 0 F
2286 -0.29 (, the plaintext contents of the last block of input) 313.41 380 P
2287 0.31 (for such a \336le is known \050a block with all bits zero\051. W) 72 360 P
2288 0.31 (ith ) 333.99 360 P
2289 3 F
2290 0.31 (des) 349.96 360 P
2291 0 F
2292 0.31 (, the plaintext contents of that block) 365.95 360 P
2293 0.73 (are not known. Cryptanalytically) 72 340 P
2294 0.73 (, given the information about the strength of the DES currently) 231.29 340 P
2295 0.2 (known, it is widely believed that known plaintext attacks are infeasible
2296 \050see for example [1]\051 and) 72 320 P
2297 1.86 (so initializing and invoking the pseudorandom number generator seems unnecessary) 72 300 P
2298 1.86 (. But this) 492.63 300 P
2299 (means that ciphertexts produced from a plaintext by ) 72 280 T
2300 3 F
2301 (bdes) 324.48 280 T
2302 0 F
2303 ( and ) 346.47 280 T
2304 3 F
2305 (des) 369.78 280 T
2306 0 F
2307 ( will dif) 385.77 280 T
2308 (fer in the last block.) 423.54 280 T
2309 4 F
2310 (Refer) 72 248 T
2311 (ences) 100.41 248 T
2312 0 F
2313 ([1]) 72 224 T
2314 0.37 (D. Denning, \322The Data Encryption Standard: Fifteen Y) 108 224 P
2315 0.37 (ears of Public Scrutiny) 374.87 224 P
2316 0.37 (,\323 ) 484.8 224 P
2317 3 F
2318 0.37 (Pr) 496.49 224 P
2319 0.37 (oceed-) 508.04 224 P
2320 -0.47 (ings of the Sixth Annual Computer Security Applications Confer) 108 204 P
2321 -0.47 (ence) 411.65 204 P
2322 0 F
2323 -0.47 ( pp. x\320xv \050Dec. 1990\051.) 433.62 204 P
2324 ([2]) 72 180 T
2325 (A. Konheim, ) 108 180 T
2326 3 F
2327 (Cryptography: A Primer) 173.29 180 T
2328 0 F
2329 (, John W) 291.4 180 T
2330 (iley and Sons, Inc., New Y) 333.9 180 T
2331 (ork, NY \0501981\051.) 461.94 180 T
2332 ([3]) 72 156 T
2333 3 F
2334 0.63 (DES Modes of Operation) 108 156 P
2335 0 F
2336 0.63 (, Federal Information Processing Standards Publication 81, Na-) 231.47 156 P
2337 -0.07 (tional Bureau of Standards, U.S. Department of Commerce, W) 108 136 P
2338 -0.07 (ashington, DC \050Dec. 1980\051.) 407.62 136 P
2339 ([4]) 72 112 T
2340 3 F
2341 (UNIX User) 108 112 T
2342 (\325) 162.74 112 T
2343 (s Manual) 165.18 112 T
2344 0 F
2345 (, Sun Microsystems Inc., Mountain V) 210.16 112 T
2346 (iew) 390 112 T
2347 (, CA \050Mar) 406.54 112 T
2348 (. 1988\051.) 455.51 112 T
2349 4 F
2350 (Appendix. The UNIX System Manual Page for ) 72 80 T
2351 1 F
2352 (bdes) 313.2 80 T
2353 FMENDPAGE
2354 %%EndPage: "7" 10
2355 1 11 /Times-Bold FMDEFINEFONT
2356 %%Page: "8" 10
2357 612 792 0 FMBEGINPAGE
2358 72 745.99 540 756 R
2359 7 X
2360 0 K
2361 V
2362 72 32.69 540 42.7 R
2363 V
2364 0 F
2365 0 X
2366 (Page 8 of 11) 479.71 34.7 T
2367 72 72 540 720 R
2368 7 X
2369 V
2370 1 F
2371 0 X
2372 (NAME) 72 712.67 T
2373 0 F
2374 (bdes - encrypt/decrypt using the Data Encryption Standard) 108 689 T
2375 1 F
2376 (SYNOPSIS) 72 663.67 T
2377 4 F
2378 (bdes) 108 640 T
2379 0 F
2380 ( [) 131.33 640 T
2381 3 F
2382 ( ) 138.32 640 T
2383 4 F
2384 (-abdp) 141.32 640 T
2385 0 F
2386 ( ] [ ) 171.31 640 T
2387 4 F
2388 (-F) 188.3 640 T
2389 0 F
2390 ( ) 199.62 640 T
2391 3 F
2392 (b) 202.62 640 T
2393 0 F
2394 ( ] [ ) 208.61 640 T
2395 4 F
2396 (-f) 225.6 640 T
2397 0 F
2398 ( ) 233.58 640 T
2399 3 F
2400 (b) 236.58 640 T
2401 0 F
2402 ( ] [ ) 242.58 640 T
2403 4 F
2404 (-k) 259.56 640 T
2405 0 F
2406 ( ) 270.22 640 T
2407 3 F
2408 (key) 273.22 640 T
2409 0 F
2410 ( ] [ ) 289.2 640 T
2411 4 F
2412 (-m) 306.18 640 T
2413 0 F
2414 ( ) 320.16 640 T
2415 3 F
2416 (b) 323.16 640 T
2417 0 F
2418 ( ] [ ) 329.16 640 T
2419 4 F
2420 (-o) 346.14 640 T
2421 0 F
2422 ( ) 356.13 640 T
2423 3 F
2424 (b) 359.13 640 T
2425 0 F
2426 ( ] [ ) 365.13 640 T
2427 4 F
2428 (-v) 382.11 640 T
2429 0 F
2430 ( ) 392.1 640 T
2431 3 F
2432 (vector) 395.1 640 T
2433 0 F
2434 ( ]) 425.07 640 T
2435 1 F
2436 (DESCRIPTION) 72 614.67 T
2437 3 F
2438 -0.69 (Bdes) 108 591 P
2439 0 F
2440 -0.69 ( reads from the standard input and writes on the standard output. It implements all DES) 131.32 591 P
2441 -0.09 (modes of operation described in FIPS PUB 81 including alternative cipher feedback mode) 108 577 P
2442 0.74 (and both authentication modes. All modes but the electronic code book mode require an) 108 563 P
2443 -0.14 (initialization vector; if none is supplied, the zero vector is used. T) 108 549 P
2444 -0.14 (o protect the key and ini-) 420.44 549 P
2445 0.29 (tialization vector from being read by) 108 535 P
2446 3 F
2447 0.29 ( ps) 284.98 535 P
2448 0 F
2449 0.29 (\0501\051, ) 298.94 535 P
2450 3 F
2451 0.29 (bdes ) 319.21 535 P
2452 0 F
2453 0.29 (hides its ar) 344.48 535 P
2454 0.29 (guments on entry) 396.81 535 P
2455 0.29 (. If no ) 479.89 535 P
2456 3 F
2457 0.29 (key ) 512.74 535 P
2458 0 F
2459 0.29 (is) 532 535 P
2460 -0.61 (given, one is requested from the controlling terminal if that can be opened, or from the stan-) 108 521 P
2461 (dard input if not.) 108 507 T
2462 -0.17 (The key and initialization vector are taken as sequences of ) 108 489 P
2463 5 F
2464 -0.14 (ASCII) 389.38 489 P
2465 0 F
2466 -0.17 ( characters which are then) 415.48 489 P
2467 -0.35 (mapped into their bit representations. If either begins with
2468 \3240x\325 or \3240X\325, that one is taken as) 108 475 P
2469 1.02 (a sequence of hexadecimal digits indicating the bit pattern; if either begins with \3240b\325 or) 108 461 P
2470 -0.73 (\3240B\325, that one is taken as a sequence of binary digits
2471 indicating the bit pattern. In either case,) 108 447 P
2472 -0.37 (only the leading 64 bits of the key or initialization vector are used, and if fewer than 64 bits) 108 433 P
2473 0.35 (are provided, enough 0 bits are appended to pad the key to 64 bits. Note that if the key is) 108 419 P
2474 0.03 (not entered on the command line, it is interpreted in the same way) 108 405 P
2475 0.03 (, because with 4.4 BSD,) 424.31 405 P
2476 -0.36 (the password reading function ) 108 391 P
2477 3 F
2478 -0.36 (getpass) 254.45 391 P
2479 0 F
2480 -0.36 (\0503\051 allows enough characters for either hex or binary) 290.43 391 P
2481 (keys to be entered.) 108 377 T
2482 0.04 (According to the DES standard, the low-order bit of each character in the key string is de-) 108 359 P
2483 -0.18 (leted. Since most ) 108 345 P
2484 5 F
2485 -0.15 (ASCII) 192.75 345 P
2486 0 F
2487 -0.18 ( representations set the high-order bit to 0, simply deleting the low-) 218.84 345 P
2488 -0.29 (order bit ef) 108 331 P
2489 -0.29 (fectively reduces the size of the key space from 2) 160.49 331 P
2490 5 F
2491 -0.24 (56) 394.67 335.8 P
2492 0 F
2493 -0.29 ( to 2) 404.67 331 P
2494 5 F
2495 -0.24 (48) 425.41 335.8 P
2496 0 F
2497 -0.29 ( keys. T) 435.4 331 P
2498 -0.29 (o prevent this,) 472.29 331 P
2499 -0.46 (the high-order bit must be a function depending in part upon the low-order bit; so, the high-) 108 317 P
2500 0.11 (order bit is set to whatever value gives odd parity) 108 303 P
2501 0.11 (. This preserves the key space size. Note) 345.05 303 P
2502 (this resetting of the parity bit is ) 108 289 T
2503 3 F
2504 (not) 260.92 289 T
2505 0 F
2506 ( done if the key is given in binary or hex.) 276.24 289 T
2507 -0.38 (By default, the standard input is encrypted using cipher block chaining mode and is written) 108 271 P
2508 0.18 (to the standard output. Using the same key for encryption and decryption preserves plain-) 108 257 P
2509 (text, so) 108 243 T
2510 ( bdes ) 225.81 225 T
2511 3 F
2512 (key) 253.79 225 T
2513 0 F
2514 ( < plaintext | bdes \320i ) 269.77 225 T
2515 3 F
2516 (key) 370.21 225 T
2517 0 F
2518 ( ) 386.19 225 T
2519 (is a very expensive equivalent of ) 108 201 T
2520 3 F
2521 (cat) 268.54 201 T
2522 0 F
2523 (\0501\051.) 283.2 201 T
2524 (Options are:) 108 183 T
2525 ( ) 108 165 T
2526 4 F
2527 (\320a) 111 165 T
2528 0 F
2529 -0.75 (The key and initialization vector strings are to be taken as ) 144 165 P
2530 5 F
2531 -0.62 (ASCII) 415.89 165 P
2532 0 F
2533 -0.75 ( suppressing the spe-) 441.98 165 P
2534 0.3 (cial interpretation given to leading \3240x\325, \3240X\325, \3240b\325,
2535 and \3240B\325 characters. Note this) 144 151 P
2536 (\337ag applies to ) 144 137 T
2537 3 F
2538 (both) 214.29 137 T
2539 0 F
2540 ( the key and initialization vector) 235.62 137 T
2541 (.) 389.85 137 T
2542 4 F
2543 (\320b) 108 119 T
2544 0 F
2545 (Use electronic code book mode.) 144 119 T
2546 4 F
2547 (\320d) 108 101 T
2548 0 F
2549 (Decrypt the input.) 144 101 T
2550 FMENDPAGE
2551 %%EndPage: "8" 11
2552 %%Page: "9" 11
2553 612 792 0 FMBEGINPAGE
2554 72 745.99 540 756 R
2555 7 X
2556 0 K
2557 V
2558 72 32.69 540 42.7 R
2559 V
2560 0 F
2561 0 X
2562 (Page 9 of 11) 479.71 34.7 T
2563 72 72 540 720 R
2564 7 X
2565 V
2566 4 F
2567 0 X
2568 (\320f) 108 712 T
2569 0 F
2570 ( ) 117.99 712 T
2571 3 F
2572 (b) 120.99 712 T
2573 0 F
2574 -0.29 (Use ) 144 712 P
2575 3 F
2576 -0.29 (b) 165.36 712 P
2577 0 F
2578 -0.29 (-bit cipher feedback mode. Currently ) 171.35 712 P
2579 3 F
2580 -0.29 (b) 350.42 712 P
2581 0 F
2582 -0.29 ( must be a multiple of 8 between 8 and) 356.42 712 P
2583 (64 inclusive \050this does not conform to the standard CFB mode speci\336cation\051.) 144 698 T
2584 4 F
2585 (\320F) 108 680 T
2586 0 F
2587 ( ) 121.32 680 T
2588 3 F
2589 (b) 124.32 680 T
2590 0 F
2591 -0.29 (Use ) 144 680 P
2592 3 F
2593 -0.29 (b) 165.36 680 P
2594 0 F
2595 -0.29 (-bit alternative cipher feedback mode. Currently ) 171.36 680 P
2596 3 F
2597 -0.29 (b) 403.77 680 P
2598 0 F
2599 -0.29 ( must be a multiple of 7 be-) 409.77 680 P
2600 -0.12 (tween 7 and 56 inclusive \050this does not conform to the alternative CFB mode spec-) 144 666 P
2601 (i\336cation\051.) 144 652 T
2602 4 F
2603 (\320k) 108 634 T
2604 0 F
2605 ( ) 120.67 634 T
2606 3 F
2607 (key) 123.66 634 T
2608 0 F
2609 0.37 (Use the string ) 144 616 P
2610 3 F
2611 0.37 (key) 214.74 616 P
2612 0 F
2613 0.37 ( as the cryptographic key) 230.72 616 P
2614 0.37 (. If this ar) 352.01 616 P
2615 0.37 (gument is not given, the user) 399.54 616 P
2616 (will be prompted for the key) 144 602 T
2617 (.) 280.12 602 T
2618 4 F
2619 (\320m) 108 584 T
2620 0 F
2621 ( ) 123.99 584 T
2622 3 F
2623 (b) 126.99 584 T
2624 0 F
2625 0.71 (Compute a message authentication code \050MAC\051 of ) 144 584 P
2626 3 F
2627 0.71 (b) 395.78 584 P
2628 0 F
2629 0.71 ( bits on the input. ) 401.77 584 P
2630 3 F
2631 0.71 (b) 491.94 584 P
2632 0 F
2633 0.71 ( must be) 497.94 584 P
2634 0.11 (between 1 and 64 inclusive; if ) 144 570 P
2635 3 F
2636 0.11 (b) 291.87 570 P
2637 0 F
2638 0.11 ( is not a multiple of 8, enough 0 bits will be added) 297.86 570 P
2639 -0.44 (to pad the MAC length to the nearest multiple of 8. Only the MAC is output. MACs) 144 556 P
2640 (are only available in cipher block chaining mode or in cipher feedback mode.) 144 542 T
2641 4 F
2642 (\320o) 108 524 T
2643 0 F
2644 ( ) 119.99 524 T
2645 3 F
2646 (b) 122.99 524 T
2647 0 F
2648 -0.34 (Use ) 144 524 P
2649 3 F
2650 -0.34 (b) 165.31 524 P
2651 0 F
2652 -0.34 (-bit output feedback mode. Currently ) 171.31 524 P
2653 3 F
2654 -0.34 (b) 350.83 524 P
2655 0 F
2656 -0.34 ( must be a multiple of 8 between 8 and) 356.83 524 P
2657 (64 inclusive \050this does not conform to the OFB mode speci\336cation\051.) 144 510 T
2658 4 F
2659 (\320p) 108 492 T
2660 0 F
2661 -0.14 (Disable the resetting of the parity bit. This \337ag forces the parity bit of the key to be) 144 492 P
2662 0.03 (used as typed, rather than making each character be of odd parity) 144 478 P
2663 0.03 (. It is used only if) 455.91 478 P
2664 (the key is given in ) 144 464 T
2665 5 F
2666 (ASCII) 234.95 464 T
2667 0 F
2668 (.) 261.04 464 T
2669 4 F
2670 (\320v) 108 446 T
2671 0 F
2672 ( ) 119.99 446 T
2673 3 F
2674 (vector) 122.99 446 T
2675 0 F
2676 -0.5 (Set the initialization vector to ) 144 428 P
2677 3 F
2678 -0.5 (v) 286.44 428 P
2679 0 F
2680 -0.5 (; the vector is interpreted in the same way as the key) 291.76 428 P
2681 -0.5 (.) 537 428 P
2682 (The vector is ignored in electronic codebook mode.) 144 414 T
2683 -0.55 (The DES is considered a very strong cryptosystem, and other than table lookup attacks, key) 108 396 P
2684 0.24 (search attacks, and Hellman\325) 108 382 P
2685 0.24 (s time-memory tradeof) 246.61 382 P
2686 0.24 (f \050all of which are very expensive and) 356.8 382 P
2687 0.66 (time-consuming\051, no cryptanalytic methods for breaking the DES are known in the open) 108 368 P
2688 0.33 (literature. No doubt the choice of keys and key security are the most vulnerable aspect of) 108 354 P
2689 3 F
2690 (bdes) 108 340 T
2691 0 F
2692 (.) 129.98 340 T
2693 4 F
2694 (IMPLEMENT) 72 314 T
2695 (A) 146.41 314 T
2696 (TION NOTES) 154.18 314 T
2697 0 F
2698 0.57 (For implementors wishing to write software compatible with this program, the following) 108 290 P
2699 -0.23 (notes are provided. This software is completely compatible with the implementation of the) 108 276 P
2700 (data encryption standard distributed by Sun Microsystems, Inc.) 108 262 T
2701 0.11 (In the ECB and CBC modes, plaintext is encrypted in units of 64 bits \0508 bytes, also called) 108 244 P
2702 0.52 (a block\051. T) 108 230 P
2703 0.52 (o ensure that the plaintext \336le is encrypted correctly) 160.49 230 P
2704 0.52 (, ) 413.01 230 P
2705 3 F
2706 0.52 (bdes ) 419.53 230 P
2707 0 F
2708 0.52 (will \050internally\051 ap-) 445.03 230 P
2709 0.29 (pend from 1 to 8 bytes, the last byte containing an integer stating how many bytes of that) 108 216 P
2710 -0.71 (\336nal block are from the plaintext \336le, and encrypt the resulting block. Hence, when decrypt-) 108 202 P
2711 0.27 (ing, the last block may contain from 0 to 7 characters present in the plaintext \336le, and the) 108 188 P
2712 -0.59 (last byte tells how many) 108 174 P
2713 -0.59 (. Note that if during decryption the last byte of the \336le does not con-) 221.46 174 P
2714 0.41 (tain an integer between 0 and 7, either the \336le has been corrupted or an incorrect key has) 108 160 P
2715 0.48 (been given. A similar mechanism is used for the OFB and CFB modes, except that those) 108 146 P
2716 0.26 (simply require the length of the input to be a multiple of the mode size, and the \336nal byte) 108 132 P
2717 -0.73 (contains an integer between 0 and one less than the number of bytes being used as the mode.) 108 118 P
2718 (\050This was another reason that the mode size must be a multiple of 8 for those modes.\051) 108 104 T
2719 FMENDPAGE
2720 %%EndPage: "9" 12
2721 %%Page: "10" 12
2722 612 792 0 FMBEGINPAGE
2723 72 745.99 540 756 R
2724 7 X
2725 0 K
2726 V
2727 72 32.69 540 42.7 R
2728 V
2729 0 F
2730 0 X
2731 (Page 10 of 11) 473.71 34.7 T
2732 72 72 540 720 R
2733 7 X
2734 V
2735 0 X
2736 0.94 (Unlike Sun\325) 108 712 P
2737 0.94 (s implementation, unused bytes of that last block are not \336lled with random) 166.58 712 P
2738 0.57 (data, but instead contain what was in those byte positions in the preceding block. This is) 108 698 P
2739 (quicker and more portable, and does not weaken the encryption signi\336cantly) 108 684 T
2740 (.) 473.95 684 T
2741 0.36 (If the key is entered in ) 108 666 P
2742 5 F
2743 0.3 (ASCII) 220.76 666 P
2744 0 F
2745 0.36 (, the parity bits of the key characters are set so that each key) 246.85 666 P
2746 1.03 (character is of odd parity) 108 652 P
2747 1.03 (. Unlike Sun\325) 231.23 652 P
2748 1.03 (s implementation, it is possible to enter binary or) 296.92 652 P
2749 -0.57 (hexadecimal keys on the command line, and if this is done, the parity bits are ) 108 638 P
2750 3 F
2751 -0.57 (not ) 472.85 638 P
2752 0 F
2753 -0.57 (reset. This) 490.61 638 P
2754 (allows testing using arbitrary bit patterns as keys.) 108 624 T
2755 0.64 (The Sun implementation always uses an initialization vector of 0 \050that is, all zeroes\051. By) 108 606 P
2756 (default, ) 108 592 T
2757 3 F
2758 (bdes ) 147.3 592 T
2759 0 F
2760 (does too, but this may be changed from the command line.) 172.29 592 T
2761 4 F
2762 (FILES) 72 566 T
2763 0 F
2764 (/dev/tty) 108 542 T
2765 (controlling terminal for typed key) 180 542 T
2766 4 F
2767 (SEE ALSO) 72 516 T
2768 3 F
2769 (crypt) 108 492 T
2770 0 F
2771 (\0501\051, ) 132.65 492 T
2772 3 F
2773 (crypt) 152.63 492 T
2774 0 F
2775 (\0503\051) 177.27 492 T
2776 3 F
2777 -0.4 (Data Encryption Standar) 108 474 P
2778 -0.4 (d) 228.02 474 P
2779 0 F
2780 -0.4 (, Federal Information Processing Standard #46, National Bureau) 234.02 474 P
2781 (of Standards, U.S. Department of Commerce, W) 108 460 T
2782 (ashington DC \050Jan. 1977\051.) 340.2 460 T
2783 3 F
2784 0.16 (DES) 108 442 P
2785 0 F
2786 0.16 ( ) 129.98 442 P
2787 3 F
2788 0.16 (Modes of Operation, ) 133.15 442 P
2789 0 F
2790 0.16 (Federal Information Processing Standard #81, National Bureau) 236.24 442 P
2791 (of Standards, U.S. Department of Commerce, W) 108 428 T
2792 (ashington DC \050Dec. 1980\051.) 340.2 428 T
2793 2.75 (Dorothy Denning, ) 108 410 P
2794 3 F
2795 2.75 (Cryptography and Data Security) 203.77 410 P
2796 0 F
2797 2.75 (, Addison-W) 368.8 410 P
2798 2.75 (esley Publishing Co.,) 432.55 410 P
2799 (Reading, MA \2511982.) 108 396 T
2800 -0.19 ( Matt Bishop, \322Implementation Notes on ) 108 378 P
2801 3 F
2802 -0.19 (bdes) 305.76 378 P
2803 0 F
2804 -0.19 (\0501\051\323, T) 327.75 378 P
2805 -0.19 (echnical Report PCS-TR-91-158, De-) 359.35 378 P
2806 0.34 (partment of Mathematics and Computer Science, Dartmouth College, Hanover) 108 364 P
2807 0.34 (, NH \050Apr) 488.01 364 P
2808 0.34 (.) 537 364 P
2809 (1991\051.) 108 350 T
2810 4 F
2811 (CAUTION) 72 324 T
2812 0 F
2813 -0.55 (Certain speci\336c keys should be avoided because they introduce potential weaknesses; these) 108 300 P
2814 -0.44 (keys, called the ) 108 286 P
2815 3 F
2816 -0.44 (weak) 183.95 286 P
2817 0 F
2818 -0.44 ( and ) 208.6 286 P
2819 3 F
2820 -0.44 (semiweak) 231.03 286 P
2821 0 F
2822 -0.44 ( keys, are \050in hex notation, where ) 277.66 286 P
2823 6 F
2824 -1.06 (p) 437.45 286 P
2825 0 F
2826 -0.44 ( is either ) 444.64 286 P
2827 6 F
2828 -1.06 (0) 487.63 286 P
2829 0 F
2830 -0.44 ( or ) 494.82 286 P
2831 6 F
2832 -1.06 (1) 509.93 286 P
2833 0 F
2834 -0.44 (, and) 517.12 286 P
2835 6 F
2836 (P) 108 272 T
2837 0 F
2838 ( is either ) 115.2 272 T
2839 6 F
2840 (e) 159.5 272 T
2841 0 F
2842 ( or ) 166.7 272 T
2843 6 F
2844 (f) 182.68 272 T
2845 0 F
2846 (\051:) 189.88 272 T
2847 6 F
2848 (0x0p0p0p0p0p0p0p0p) 144 254 T
2849 (0x0p1P0p1P0p0P0p0P) 360 254 T
2850 (0x0pep0pep0pfp0pfp) 144 236 T
2851 (0x0pfP0pfP0pfP0pfP) 360 236 T
2852 (0x1P0p1P0p0P0p0P0p) 144 218 T
2853 (0x1P1P1P1P0P0P0P0P) 360 218 T
2854 (0x1Pep1Pep0Pfp0Pfp) 144 200 T
2855 (0x1PfP1PfP0PfP0PfP) 360 200 T
2856 (0xep0pep0pfp0pfp0p) 144 182 T
2857 (0xep1Pep1pfp0Pfp0P) 360 182 T
2858 (0xepepepepepepepep) 144 164 T
2859 (0xepfPepfPfpfPfpfP) 360 164 T
2860 (0xfP0pfP0pfP0pfP0p) 144 146 T
2861 (0xfP1PfP1PfP0PfP0P) 360 146 T
2862 (0xfPepfPepfPepfPep) 144 128 T
2863 (0xfPfPfPfPfPfPfPfP) 360 128 T
2864 0 F
2865 0.13 (The weakness of these keys is inherent in the DES algorithm \050see for example Moore and) 108 110 P
2866 -0.57 (Simmons, \322Cycle structure of the DES with weak and semi-weak keys,\323) 108 96 P
2867 3 F
2868 -0.57 ( Advances in Cryp-) 449.43 96 P
2869 (tology \320 Crypto \32486 Pr) 108 82 T
2870 (oceedings) 216.83 82 T
2871 0 F
2872 (, Springer) 264.79 82 T
2873 (-V) 311.85 82 T
2874 (erlag New Y) 323.17 82 T
2875 (ork, \2511987, pp. 9-32\051.) 383.25 82 T
2876 FMENDPAGE
2877 %%EndPage: "10" 13
2878 %%Page: "11" 13
2879 612 792 0 FMBEGINPAGE
2880 72 745.99 540 756 R
2881 7 X
2882 0 K
2883 V
2884 72 32.69 540 42.7 R
2885 V
2886 0 F
2887 0 X
2888 (Page 11 of 11) 473.71 34.7 T
2889 72 72 540 720 R
2890 7 X
2891 V
2892 4 F
2893 0 X
2894 (BUGS) 72 712 T
2895 0 F
2896 -0.18 (There is a controversy raging over whether the DES will still be secure in a few years. The) 108 688 P
2897 0.31 (advent of special-purpose hardware could reduce the cost of any of the methods of attack) 108 674 P
2898 (named above so that they are no longer computationally infeasible.) 108 660 T
2899 0.32 (Programs which display programs\325 ar) 108 642 P
2900 0.32 (guments may compromise the key and initialization) 289.59 642 P
2901 0.76 (vector if they are speci\336ed on the command line. T) 108 628 P
2902 0.76 (o avoid this ) 358.46 628 P
2903 3 F
2904 0.76 (bdes) 419.7 628 P
2905 0 F
2906 0.76 ( overwrites its ar) 441.68 628 P
2907 0.76 (gu-) 524.01 628 P
2908 (ments. However) 108 614 T
2909 (, the obvious race cannot currently be avoided.) 186.12 614 T
2910 0.25 (As the key or key schedule is kept in memory throughout the run of this program, the en-) 108 596 P
2911 (cryption can be compromised if memory is readable.) 108 582 T
2912 -0.4 (There is no warranty of merchantability nor any warranty of \336tness for a particular purpose) 108 564 P
2913 0.05 (nor any other warranty) 108 550 P
2914 0.05 (, either express or implied, as to the accuracy of the enclosed mate-) 216.95 550 P
2915 (rials or as to their suitability for any particular purpose.) 108 536 T
2916 -0.06 (Accordingly) 108 518 P
2917 -0.06 (, the user assumes full responsibility for their use. Further) 167.18 518 P
2918 -0.06 (, the author assumes) 442.93 518 P
2919 -0.25 (no obligation to furnish any assistance of any kind whatsoever) 108 504 P
2920 -0.25 (, or to furnish any additional) 404.69 504 P
2921 (information or documentation.) 108 490 T
2922 4 F
2923 (AUTHOR) 72 464 T
2924 0 F
2925 -0.54 (Matt Bishop, Department of Mathematics and Computer Science, Bradley Hall, Dartmouth) 108 440 P
2926 (College, Hanover) 108 426 T
2927 (, NH 03755) 192.12 426 T
2928 (Electronic mail addresses:) 108 408 T
2929 (Internet: Matt.Bishop@dartmouth.edu) 108 390 T
2930 (UUCP: decvax!dartvax!Matt.Bishop) 108 372 T
2931 FMENDPAGE
2932 %%EndPage: "11" 14
2933 %%Trailer
2934 %%BoundingBox: 0 0 612 792
2935 %%Pages: 13 1
2936 %%DocumentFonts: Helvetica-Bold
2937 %%+ Helvetica-BoldOblique
2938 %%+ Times-Roman
2939 %%+ Times-Bold
2940 %%+ Times-BoldItalic
2941 %%+ Times-Italic
2942 %%+ Courier
2943 %%+ Courier-Oblique
2944 %%+ ZapfDingbats
2945 %%+ Symbol
2946 %%+ Courier-Bold