3 @(#) $Id: README.sha1,v 13.1 2006/08/14 03:16:33 chongo Exp $
4 @(#) $Source: /usr/local/src/cmd/hash/RCS/README.sha1,v $
6 The sha1 utility implements the Secure Hash Standard-1 (SHS1).
7 The Secure Hash Standard-1 (SHS1) is a United States Department
8 of Commerce National Institute of Standards and Technology approved
9 standard (FIPS Pub 180-1) for secure hashing.
11 The name, shs1 is a link to sha1 and is given for backward compatibility.
13 The shs utility implements the old Secure Hash Algorithm
14 as specified by (FIPS Pub 180). This utility is provided for back-
15 ward compatibility with versions at or before 2.10.1.
17 This code is based on code by Peter C. Gutmann. Much thanks goes
18 to Peter C. Gutman (pgut1@cs.aukuni.ac.nz) , Shawn A. Clifford
19 (sac@eng.ufl.edu), Pat Myrto (pat@rwing.uucp), Colin Plumb
20 (colin@nyx10.cs.du.edu), Rich Schroeppel (rcs@cs.arizona.edu)
21 and others who wrote and/or worked on the original code.
23 The digests produced from strings (-s string), files or stdin are
24 identical to the Gutmann's program. The command line and output
25 interface are upward compatible as well. Users of the original shs
26 program may replace it with this version has their existing use
27 and digests will be preserved.
29 See shs1drvr.c (or shsdrvr.c) for version information. See the man
30 page sha(1) for other details.
32 Landon Curt Noll (chongo was here) /\../\
33 http://www.isthe.com/chongo/index.html
42 PROCESSING STANDARDS PUBLICATION
46 U.S. DEPARTMENT OF COMMERCE/National Institute of Standards and Technology
50 /*** NOTE: NOT OFFICIAL. HARD COPY IS THE OFFICIAL VERSION.
51 ^ is used for exponentiation or superscript. ***/
53 CATEGORY: COMPUTER SECURITY
55 U.S. DEPARTMENT OF COMMERCE, Ronald H. Brown, Secretary
56 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
60 The Federal Information Processing Standards Publication Series
61 of the National Institute of Standards and Technology (NIST) is the
62 official series of publications relating to standards and
63 guidelines adopted and promulgated under the provisions of Section
64 111(d) of the Federal Property and Administrative Services Act of
65 1949 as amended by the Computer Security Act of 1987, Public Law
66 100-235. These mandates have given the Secretary of Commerce and
67 NIST important responsibilities for improving the utilization and
68 management of computer and related telecommunications systems in
69 the Federal Government. The NIST, through the Computer Systems
70 Laboratory, provides leadership, technical guidance, and
71 coordination of Government efforts in the development of standards
72 and guidelines in these areas.
74 Comments concerning Federal Information Processing Standards
75 Publications are welcomed and should be addressed to the Director,
76 Computer Systems Laboratory, National Institute of Standards and
77 Technology, Gaithersburg, MD 20899.
79 James H. Burrows, Director
80 Computer Systems Laboratory
84 This standard specifies a Secure Hash Algorithm (SHA-1) which can
85 be used to generate a condensed representation of a message called
86 a message digest. The SHA-1 is required for use with the Digital
87 Signature Algorithm (DSA) as specified in the Digital Signature Standard (DSS)
88 and whenever a secure hash algorithm is required for federal applications.
89 The SHA-1 is used by both the transmitter and intended receiver of a message in
90 computing and verifying a digital signature.
92 Key words: Computer security, digital signatures,
93 Federal Information Processing Standard, hash algorithm.
98 Processing Standards Publication 180-1
106 Federal Information Processing Standards Publications (FIPS PUBS)
107 are issued by the National Institute of Standards and Technology
108 (NIST) after approval by the Secretary of Commerce pursuant to
109 Section 111(d) of the Federal Property and Administrative Services
110 Act of 1949 as amended by the Computer Security Act of 1987, Public
113 Name of Standard: Secure Hash Standard.
115 Category of Standard: Computer Security.
117 Explanation: This Standard specifies a Secure Hash Algorithm, SHA-1,
118 for computing a condensed representation of a message or a data file. When a
119 message of any length < 2^64 bits is input, the SHA-1 produces a 160-bit output
120 called a message digest. The message digest can
121 then be input to the Digital Signature Algorithm (DSA) which generates or
122 verifies the signature for the message. Signing the
123 message digest rather than the message often
124 improves the efficiency of the process because the message digest is
125 usually much smaller in size than the message. The same hash algorithm
126 must be used by the verifier of a digital signature
127 as was used by the creator of the digital signature.
128 The SHA-1 is called secure
129 because it is computationally infeasible to find a message which corresponds
130 to a given message digest, or to find two different messages which produce the
131 same message digest. Any change to a message
132 in transit will, with very high probability, result in a different message
133 digest, and the signature will fail to verify. SHA-1
134 is a technical revision of SHA (FIPS 180). A circular left
135 shift operation has been added to the specifications in section
136 7, line b, page 9 of FIPS 180 and its equivalent in section 8, line c,
137 page 10 of FIPS 180. This revision improves the security provided by
138 this standard. The SHA-1 is based on principles
139 similar to those used by Professor Ronald L. Rivest of MIT when designing
140 the MD4 message digest algorithm ("The MD4 Message Digest
141 Algorithm," Advances in Cryptology - CRYPTO '90 Proceedings,
142 Springer-Verlag, 1991, pp. 303-311), and is
143 closely modelled after that algorithm.
145 Approving Authority: Secretary of Commerce.
147 Maintenance Agency: U.S. Department of Commerce,
148 National Institute of Standards and Technology, Computer Systems Laboratory.
150 Applicability: This standard is applicable to all Federal
151 departments and agencies for the protection of unclassified
152 information that is not subject to section 2315 of Title 10, United
153 States Code, or section 3502(2) of Title 44, United States Code.
154 This standard is required for use with the Digital Signature Algorithm
155 (DSA) as specified in the Digital Signature Standard (DSS)
156 and whenever a secure hash algorithm is required for
157 federal applications. Private and commercial organizations are
158 encouraged to adopt and use this standard.
160 Applications: The SHA-1 may be used with the DSA in electronic mail,
161 electronic funds transfer, software distribution, data storage, and other
162 applications which require data integrity assurance
163 and data origin authentication. The SHA-1 may also be used whenever it is
164 necessary to generate a condensed version of a message.
166 Implementations: The SHA-1 may be implemented in software, firmware,
167 hardware, or any combination thereof. Only implementations of the
168 SHA-1 that are validated by NIST will be considered as complying with
169 this standard. Information about the requirements for validating
170 implementations of this standard can be obtained from the National
171 Institute of Standards and Technology, Computer Systems Laboratory,
172 Attn: SHS Validation, Gaithersburg, MD 20899.
174 Export Control: Implementations of this standard are subject to
175 Federal Government export controls as specified in Title 15, Code
176 of Federal Regulations, Parts 768 through 799. Exporters are
177 advised to contact the Department of Commerce, Bureau of Export
178 Administration for more information.
180 Patents: Implementations of the SHA-1 in this standard may be covered
181 by U.S. and foreign patents.
183 Implementation Schedule: This standard becomes effective 90 days after
184 approval by the Secterary of Commerce.
186 Specifications: Federal Information Processing Standard (FIPS 180-1)
187 Secure Hash Standard (affixed).
191 a. FIPS PUB 46-1, Data Encryption Standard.
193 b. FIPS PUB 73, Guidelines for Security of Computer Applications.
195 c. FIPS PUB 140-1, Security Requirements for Cryptographic Modules.
197 d. FIPS PUB 186, Digital Signature Standard.
199 e. Federal Informations Resources Management Regulations (FIRMR) subpart
200 201.20.303, Standards, and subpart 201.39.1002, Federal Standards.
202 Objectives: The objectives of this standard are to:
204 a. Specify the secure hash algorithm required for use with the
205 Digital Signature Standard (FIPS 186) in the generation and
206 verification of digital signatures.
208 b. Specify the secure hash algorithm to be used whenever
209 a secure hash algorithm is required for federal applications.
211 c. Encourage the adoption and use of the specified secure hash algorithm by
212 private and commercial organizations.
214 Qualifications: While it is the intent of this standard to specify
215 a secure hash algorithm, conformance to this standard does not
216 assure that a particular implementation is secure. The responsible
217 authority in each agency or department shall assure that an overall
218 implementation provides an acceptable level of security. This
219 standard will be reviewed every five years in order to assess its
222 Waiver Procedure: Under certain exceptional circumstances, the
223 heads of Federal departments and agencies may approve waivers to
224 Federal Information Processing Standards (FIPS). The head of such
225 agency may redelegate such authority only to a senior official
226 designated pursuant to section 3506(b) of Title 44, United States
227 Code. Waiver shall be granted only when:
229 a. Compliance with a standard would adversely affect the
230 accomplishment of the mission of an operator of a Federal
233 b. Compliance with a standard would cause a major adverse
234 financial impact on the operator which is not offset by
235 Government-wide savings.
237 Agency heads may act upon a written waiver request containing the
238 information detailed above. Agency heads may also act without a
239 written waiver request when they determine that conditions for
240 meeting the standard cannot be met. Agency heads may approve
241 waivers only by a written decision which explains the basis on
242 which the agency head made the required finding(s). A copy of
243 each decision, with procurement sensitive or classified portions
244 clearly identified, shall be sent to: National Institute of
245 Standards and Technology; ATTN: FIPS Waiver Decisions, Technology
246 Building, Room B-154, Gaithersburg, MD 20899.
248 In addition, notice of each waiver granted and each delegation of
249 authority to approve waivers shall be sent promptly to the
250 Committee on Government Operations of the House of Representatives
251 and the Committee on Government Affairs of the Senate and shall be
252 published promptly in the Federal Register.
254 When the determination on a waiver applies to the procurement of
255 equipment and/or services, a notice of the waiver determination
256 must be published in the Commerce Business Daily as a part of the
257 notice of solicitation for offers of an acquisition or, if the
258 waiver determination is made after that notice is published, by
259 amendment to such notice.
261 A copy of the waiver, any supporting documents, the document
262 approving the waiver and any accompanying documents, with such
263 deletions as the agency is authorized and decides to make under 5
264 United States Code Section 552(b), shall be part of the procurement
265 documentation and retained by the agency.
267 Where to Obtain Copies of the Standard: Copies of this publication
268 are for sale by the National Technical Information Service, U.S.
269 Department of Commerce, Springfield, VA 22161. When ordering,
270 refer to Federal Information Processing Standards Publication 180-1
271 (FIPS PUB 180-1), and identify the title. When microfiche is desired,
272 this should be specified. Prices are published by NTIS in current
273 catalogs and other issuances. Payment may be made by check, money
274 order, deposit account or charged to a credit card accepted by
277 Federal Information Processing Standards Publication 180-1
281 Specifications for the
287 The Secure Hash Algorithm (SHA-1) is required for use with the Digital
288 Signature Algorithm (DSA) as specified in the Digital Signature Standard (DSS)
289 and whenever a secure hash algorithm is required for federal applications.
290 For a message of length < 2^64 bits, the SHA-1
291 produces a 160-bit condensed representation of the message called a message
292 digest. The message digest is used during generation of a signature for the
293 message. The SHA-1 is also used
294 to compute a message digest for the received version of the message during the
295 process of verifying the signature. Any change to the message in transit
296 will, with very high probability,
297 result in a different message digest, and the signature will fail to verify.
299 The SHA-1 is designed to have the following properties: it is computationally
300 infeasible to find a message which corresponds to a given message digest, or
301 to find two different messages which produce the same message digest.
303 2. BIT STRINGS AND INTEGERS
305 The following terminology related to bit strings and integers will be used:
307 a. A hex digit is an element of the set {0, 1, ... , 9, A, ... , F}. A
308 hex digit is the representation of a 4-bit string. Examples: 7 = 0111,
311 b. A word equals a 32-bit string which may be represented as a sequence of 8
312 hex digits. To convert a word to 8 hex digits each 4-bit string is
313 converted to its hex equivalent as described in (a) above. Example:
315 1010 0001 0000 0011 1111 1110 0010 0011 = A103FE23.
317 c. An integer between 0 and 2^32 - 1 inclusive may be represented as a word.
318 The least significant four bits of the integer are represented by the
319 right-most hex digit of the word representation. Example: the integer
320 291 = 2^8+2^5+2^1+2^0 = 256+32+2+1
321 is represented by the hex word, 00000123.
323 If z is an integer, 0 <= z < 2^64, then z = 2^32x + y where 0 <=
324 x < 2^32 and 0 <= y < 2^32. Since x and y can be represented as words
325 X and Y, respectively, z can be represented as the pair of words (X,Y).
327 d. block = 512-bit string. A block (e.g., B) may be represented as a
328 sequence of 16 words.
330 3. OPERATIONS ON WORDS
332 The following logical operators will be applied to words:
334 a. Bitwise logical word operations
336 X AND Y = bitwise logical "and" of X and Y.
338 X OR Y = bitwise logical "inclusive-or" of X and Y.
340 X XOR Y = bitwise logical "exclusive-or" of X and Y.
342 NOT X = bitwise logical "complement" of X.
346 01101100101110011101001001111011
347 XOR 01100101110000010110100110110111
348 --------------------------------
349 = 00001001011110001011101111001100.
351 b. The operation X + Y is defined as follows: words X and Y represent
352 integers x and y, where 0 <= x < 2^32 and 0 <= y < 2^32. For positive
353 integers n and m, let n mod m be the remainder upon dividing n by
356 z = (x + y) mod 2^32.
358 Then 0 <= z < 2^32. Convert z to a word, Z, and define Z = X + Y.
360 c. The circular left shift operation S^n(X), where X is a word and n is an
361 integer with 0 <= n < 32, is defined by
363 S^n(X) = (X << n) OR (X >> 32-n).
365 In the above, X << n is obtained as follows: discard the left-most n bits
366 of X and then pad the result with n zeroes on the right (the result
367 will still be 32 bits). X >> n is obtained by discarding the right-most
368 n bits of X and then padding the result with n
369 zeroes on the left. Thus S^n(X) is equivalent to a circular shift of X by
370 n positions to the left.
374 The SHA-1 is used to compute a message digest for a message or data file that
375 is provided as input. The message or data file should be considered to be
376 a bit string. The length of the message is the number of bits in the message
377 (the empty message has length 0). If the number of bits in a message is a
378 multiple of 8, for compactness we can represent the message in hex.
379 The purpose of message padding is to make the total length of a padded message
380 a multiple of 512. The SHA-1 sequentially processes blocks of 512
381 bits when computing the message digest.
382 The following specifies how this padding shall be performed. As a summary,
383 a "1" followed by m "0"s followed by a 64-bit integer are appended to the end
384 of the message to produce a padded
385 message of length 512 * n. The 64-bit integer is l, the length of the
386 original message. The padded message is then processed by the SHA-1 as n
389 Suppose a message has length l < 2^64. Before it is input to the SHA-1, the
390 message is padded on the right as follows:
392 a. "1" is appended. Example: if the original message is "01010000", this is
393 padded to "010100001".
395 b. "0"s are appended. The number of "0"s will depend on the original length
396 of the message. The last 64 bits of the last 512-bit block are reserved
397 for the length l of the original message.
399 Example: Suppose the original message is the bit string
401 01100001 01100010 01100011 01100100 01100101.
403 After step (a) this gives
405 01100001 01100010 01100011 01100100 01100101 1.
407 Since l = 40, the number of bits in the above is 41 and 407 "0"s are
408 appended, making the total now 448. This gives (in hex)
410 61626364 65800000 00000000 00000000
411 00000000 00000000 00000000 00000000
412 00000000 00000000 00000000 00000000
415 c. Obtain the 2-word representation of l, the number of bits in the original
416 message. If l < 2^32 then the first word is all zeroes. Append these two
417 words to the padded message.
419 Example: Suppose the original message is as in (b). Then l = 40 (note
420 that l is computed before any padding). The two-word representation of 40
421 is hex 00000000 00000028. Hence the final padded message is hex
423 61626364 65800000 00000000 00000000
424 00000000 00000000 00000000 00000000
425 00000000 00000000 00000000 00000000
426 00000000 00000000 00000000 00000028.
428 The padded message will contain 16 * n words for some n > 0. The padded
430 is regarded as a sequence of n blocks M(1) , M(2), ... , M(n), where each M(i)
431 contains 16 words and M(1)
432 contains the first characters (or bits) of the message.
436 A sequence of logical functions f(t;B,C,D), 0 <= t <= 79,
437 is used in the SHA-1. Each f operates on three 32-bit words B, C, D
438 and produces a 32-bit word as output. f(t;B,C,D) is defined as follows: for
441 f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0 <= t <= 19)
443 f(t;B,C,D) = B XOR C XOR D (20 <= t <= 39)
445 f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40 <= t <= 59)
447 f(t;B,C,D) = B XOR C XOR D (60 <= t <= 79).
451 A sequence of constant words K(0), K(1), ... , K(79) is used in the SHA.
452 In hex these are given by
454 K(t) = 5A827999 (0 <= t <= 19)
456 K(t) = 6ED9EBA1 (20 <= t <= 39)
458 K(t) = 8F1BBCDC (40 <= t <= 59)
460 K(t) = CA62C1D6 (60 <= t <= 79).
462 7. COMPUTING THE MESSAGE DIGEST
464 The message digest is computed using the final padded message.
465 The computation uses two buffers, each consisting of five 32-bit
466 words, and a sequence of eighty 32-bit words. The words of the
467 first 5-word buffer are labeled A,B,C,D,E. The words of the second
468 5-word buffer are labeled H0, H1, H2, H3, H4. The words of the 80-
469 word sequence are labeled W(0), W(1), ... , W(79). A single word buffer
470 TEMP is also employed.
472 To generate the message digest, the 16-word blocks M(1), M(2), ...
473 , M(n) defined in Section 4 are processed in order. The processing
474 of each M(i) involves 80 steps.
476 Before processing any blocks, the H's are initialized as
489 Now M(1), M(2), ... , M(n) are processed. To process M(i), we proceed as
492 a. Divide M(i) into 16 words W(0), W(1), ... , W(15), where W(0) is the
495 b. For t = 16 to 79 let
496 W(t) = S^1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)).
498 c. Let A = H0, B = H1, C = H2, D = H3, E = H4.
500 d. For t = 0 to 79 do
502 TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);
504 E = D; D = C; C = S^30(B); B = A; A = TEMP;
506 e. Let H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4
509 After processing M(n), the message digest is the 160-bit string
510 represented by the 5 words
514 The above assumes that the sequence W(0), ... , W(79) is implemented
515 as an array of eighty 32-bit words. This is efficient from the
516 standpoint of minimization of execution time, since the addresses
517 of W(t-3), ... , W(t-16) in step (b) are easily computed. If space is at
518 a premium, an alternative is to regard { W(t) } as a circular queue,
519 which may be implemented using an array of sixteen 32-bit words
520 W[0], ... W[15]. In this case, in hex let MASK = 0000000F. Then
521 processing of M(i) is as follows:
523 a. Divide M(i) into 16 words W[0], ... , W[15], where W[0] is the
526 b. Let A = H0, B = H1, C = H2, D = H3, E = H4.
528 c. For t = 0 to 79 do
532 if (t >= 16) W[s] = S^1(W[(s + 13) AND MASK] XOR W[(s + 8) AND
534 MASK] XOR W[(s + 2) AND MASK] XOR W[s]);
536 TEMP = S^5(A) + f(t;B,C,D) + E + W[s] + K(t);
538 E = D; D = C; C = S^30(B); B = A; A = TEMP;
540 d. Let H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4
543 The methods of Sections 7 and 8 yield the same message digest.
544 Although using the method of Section 8 saves sixty-four 32-bit words of
545 storage, it is likely to lengthen execution time due to the
546 increased complexity of the address computations for the { W[t] }
547 in step (c). Other computation methods which give identical
548 results may be implemented in conformance with the standard.
551 APPENDIX A. A SAMPLE MESSAGE AND ITS MESSAGE DIGEST
553 This appendix is for informational purposes only and is not required to meet
556 Let the message be the ASCII binary-coded form of "abc", i.e.,
558 01100001 01100010 01100011.
560 This message has length l = 24. In step (a) of Section 4, we append "1". In
561 step (b) we append 423 "0"s. In step (c) we append hex 00000000 00000018,
562 the 2-word representation of 24.
563 Thus the final padded message consists of one block, so that n = 1 in the
564 notation of Section 4.
566 The initial hex values of {Hi} are
578 Start processing block 1. The words of block 1 are
597 The hex values of A,B,C,D,E after pass t of the "for t = 0 to 79" loop
598 (step (d) of Section 7 or step (c) of Section 8) are
602 t = 0: 0116FC33 67452301 7BF36AE2 98BADCFE 10325476
603 t = 1: 8990536D 0116FC33 59D148C0 7BF36AE2 98BADCFE
604 t = 2: A1390F08 8990536D C045BF0C 59D148C0 7BF36AE2
605 t = 3: CDD8E11B A1390F08 626414DB C045BF0C 59D148C0
606 t = 4: CFD499DE CDD8E11B 284E43C2 626414DB C045BF0C
607 t = 5: 3FC7CA40 CFD499DE F3763846 284E43C2 626414DB
608 t = 6: 993E30C1 3FC7CA40 B3F52677 F3763846 284E43C2
609 t = 7: 9E8C07D4 993E30C1 0FF1F290 B3F52677 F3763846
610 t = 8: 4B6AE328 9E8C07D4 664F8C30 0FF1F290 B3F52677
611 t = 9: 8351F929 4B6AE328 27A301F5 664F8C30 0FF1F290
612 t = 10: FBDA9E89 8351F929 12DAB8CA 27A301F5 664F8C30
613 t = 11: 63188FE4 FBDA9E89 60D47E4A 12DAB8CA 27A301F5
614 t = 12: 4607B664 63188FE4 7EF6A7A2 60D47E4A 12DAB8CA
615 t = 13: 9128F695 4607B664 18C623F9 7EF6A7A2 60D47E4A
616 t = 14: 196BEE77 9128F695 1181ED99 18C623F9 7EF6A7A2
617 t = 15: 20BDD62F 196BEE77 644A3DA5 1181ED99 18C623F9
618 t = 16: 4E925823 20BDD62F C65AFB9D 644A3DA5 1181ED99
619 t = 17: 82AA6728 4E925823 C82F758B C65AFB9D 644A3DA5
620 t = 18: DC64901D 82AA6728 D3A49608 C82F758B C65AFB9D
621 t = 19: FD9E1D7D DC64901D 20AA99CA D3A49608 C82F758B
622 t = 20: 1A37B0CA FD9E1D7D 77192407 20AA99CA D3A49608
623 t = 21: 33A23BFC 1A37B0CA 7F67875F 77192407 20AA99CA
624 t = 22: 21283486 33A23BFC 868DEC32 7F67875F 77192407
625 t = 23: D541F12D 21283486 0CE88EFF 868DEC32 7F67875F
626 t = 24: C7567DC6 D541F12D 884A0D21 0CE88EFF 868DEC32
627 t = 25: 48413BA4 C7567DC6 75507C4B 884A0D21 0CE88EFF
628 t = 26: BE35FBD5 48413BA4 B1D59F71 75507C4B 884A0D21
629 t = 27: 4AA84D97 BE35FBD5 12104EE9 B1D59F71 75507C4B
630 t = 28: 8370B52E 4AA84D97 6F8D7EF5 12104EE9 B1D59F71
631 t = 29: C5FBAF5D 8370B52E D2AA1365 6F8D7EF5 12104EE9
632 t = 30: 1267B407 C5FBAF5D A0DC2D4B D2AA1365 6F8D7EF5
633 t = 31: 3B845D33 1267B407 717EEBD7 A0DC2D4B D2AA1365
634 t = 32: 046FAA0A 3B845D33 C499ED01 717EEBD7 A0DC2D4B
635 t = 33: 2C0EBC11 046FAA0A CEE1174C C499ED01 717EEBD7
636 t = 34: 21796AD4 2C0EBC11 811BEA82 CEE1174C C499ED01
637 t = 35: DCBBB0CB 21796AD4 4B03AF04 811BEA82 CEE1174C
638 t = 36: 0F511FD8 DCBBB0CB 085E5AB5 4B03AF04 811BEA82
639 t = 37: DC63973F 0F511FD8 F72EEC32 085E5AB5 4B03AF04
640 t = 38: 4C986405 DC63973F 03D447F6 F72EEC32 085E5AB5
641 t = 39: 32DE1CBA 4C986405 F718E5CF 03D447F6 F72EEC32
642 t = 40: FC87DEDF 32DE1CBA 53261901 F718E5CF 03D447F6
643 t = 41: 970A0D5C FC87DEDF 8CB7872E 53261901 F718E5CF
644 t = 42: 7F193DC5 970A0D5C FF21F7B7 8CB7872E 53261901
645 t = 43: EE1B1AAF 7F193DC5 25C28357 FF21F7B7 8CB7872E
646 t = 44: 40F28E09 EE1B1AAF 5FC64F71 25C28357 FF21F7B7
647 t = 45: 1C51E1F2 40F28E09 FB86C6AB 5FC64F71 25C28357
648 t = 46: A01B846C 1C51E1F2 503CA382 FB86C6AB 5FC64F71
649 t = 47: BEAD02CA A01B846C 8714787C 503CA382 FB86C6AB
650 t = 48: BAF39337 BEAD02CA 2806E11B 8714787C 503CA382
651 t = 49: 120731C5 BAF39337 AFAB40B2 2806E11B 8714787C
652 t = 50: 641DB2CE 120731C5 EEBCE4CD AFAB40B2 2806E11B
653 t = 51: 3847AD66 641DB2CE 4481CC71 EEBCE4CD AFAB40B2
654 t = 52: E490436D 3847AD66 99076CB3 4481CC71 EEBCE4CD
655 t = 53: 27E9F1D8 E490436D 8E11EB59 99076CB3 4481CC71
656 t = 54: 7B71F76D 27E9F1D8 792410DB 8E11EB59 99076CB3
657 t = 55: 5E6456AF 7B71F76D 09FA7C76 792410DB 8E11EB59
658 t = 56: C846093F 5E6456AF 5EDC7DDB 09FA7C76 792410DB
659 t = 57: D262FF50 C846093F D79915AB 5EDC7DDB 09FA7C76
660 t = 58: 09D785FD D262FF50 F211824F D79915AB 5EDC7DDB
661 t = 59: 3F52DE5A 09D785FD 3498BFD4 F211824F D79915AB
662 t = 60: D756C147 3F52DE5A 4275E17F 3498BFD4 F211824F
663 t = 61: 548C9CB2 D756C147 8FD4B796 4275E17F 3498BFD4
664 t = 62: B66C020B 548C9CB2 F5D5B051 8FD4B796 4275E17F
665 t = 63: 6B61C9E1 B66C020B 9523272C F5D5B051 8FD4B796
666 t = 64: 19DFA7AC 6B61C9E1 ED9B0082 9523272C F5D5B051
667 t = 65: 101655F9 19DFA7AC 5AD87278 ED9B0082 9523272C
668 t = 66: 0C3DF2B4 101655F9 0677E9EB 5AD87278 ED9B0082
669 t = 67: 78DD4D2B 0C3DF2B4 4405957E 0677E9EB 5AD87278
670 t = 68: 497093C0 78DD4D2B 030F7CAD 4405957E 0677E9EB
671 t = 69: 3F2588C2 497093C0 DE37534A 030F7CAD 4405957E
672 t = 70: C199F8C7 3F2588C2 125C24F0 DE37534A 030F7CAD
673 t = 71: 39859DE7 C199F8C7 8FC96230 125C24F0 DE37534A
674 t = 72: EDB42DE4 39859DE7 F0667E31 8FC96230 125C24F0
675 t = 73: 11793F6F EDB42DE4 CE616779 F0667E31 8FC96230
676 t = 74: 5EE76897 11793F6F 3B6D0B79 CE616779 F0667E31
677 t = 75: 63F7DAB7 5EE76897 C45E4FDB 3B6D0B79 CE616779
678 t = 76: A079B7D9 63F7DAB7 D7B9DA25 C45E4FDB 3B6D0B79
679 t = 77: 860D21CC A079B7D9 D8FDF6AD D7B9DA25 C45E4FDB
680 t = 78: 5738D5E1 860D21CC 681E6DF6 D8FDF6AD D7B9DA25
681 t = 79: 42541B35 5738D5E1 21834873 681E6DF6 D8FDF6AD.
683 Block 1 has been processed. The values of {Hi} are
685 H0 = 67452301 + 42541B35 = A9993E36
687 H1 = EFCDAB89 + 5738D5E1 = 4706816A
689 H2 = 98BADCFE + 21834873 = BA3E2571
691 H3 = 10325476 + 681E6DF6 = 7850C26C
693 H4 = C3D2E1F0 + D8FDF6AD = 9CD0D89D.
695 Message digest = A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
697 APPENDIX B. A SECOND SAMPLE MESSAGE AND ITS MESSAGE DIGEST
699 This appendix is for informational purposes only and is not required to
702 Let the message be the binary-coded form (cf. Appendix A) of the ASCII string
704 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq".
706 Since each of the 56 characters is converted to 8 bits, the length of the
707 message is l = 448. In step (a) of Section 4, we append "1". In step (b)
708 we append 511 "0"s. In step (c) we append
709 the 2-word representation of 448, i.e., hex 00000000 000001C0. This gives n =
712 The initial hex values of {Hi} are
724 Start processing block 1. The words of block 1 are
743 The hex values of A,B,C,D,E after pass t of the "for t = 0 to 79" loop (step
744 (d) of Section 7 or step (c) of Section 8) are
748 t = 0: 0116FC17 67452301 7BF36AE2 98BADCFE 10325476
749 t = 1: EBF3B452 0116FC17 59D148C0 7BF36AE2 98BADCFE
750 t = 2: 5109913A EBF3B452 C045BF05 59D148C0 7BF36AE2
751 t = 3: 2C4F6EAC 5109913A BAFCED14 C045BF05 59D148C0
752 t = 4: 33F4AE5B 2C4F6EAC 9442644E BAFCED14 C045BF05
753 t = 5: 96B85189 33F4AE5B 0B13DBAB 9442644E BAFCED14
754 t = 6: DB04CB58 96B85189 CCFD2B96 0B13DBAB 9442644E
755 t = 7: 45833F0F DB04CB58 65AE1462 CCFD2B96 0B13DBAB
756 t = 8: C565C35E 45833F0F 36C132D6 65AE1462 CCFD2B96
757 t = 9: 6350AFDA C565C35E D160CFC3 36C132D6 65AE1462
758 t = 10: 8993EA77 6350AFDA B15970D7 D160CFC3 36C132D6
759 t = 11: E19ECAA2 8993EA77 98D42BF6 B15970D7 D160CFC3
760 t = 12: 8603481E E19ECAA2 E264FA9D 98D42BF6 B15970D7
761 t = 13: 32F94A85 8603481E B867B2A8 E264FA9D 98D42BF6
762 t = 14: B2E7A8BE 32F94A85 A180D207 B867B2A8 E264FA9D
763 t = 15: 42637E39 B2E7A8BE 4CBE52A1 A180D207 B867B2A8
764 t = 16: 6B068048 42637E39 ACB9EA2F 4CBE52A1 A180D207
765 t = 17: 426B9C35 6B068048 5098DF8E ACB9EA2F 4CBE52A1
766 t = 18: 944B1BD1 426B9C35 1AC1A012 5098DF8E ACB9EA2F
767 t = 19: 6C445652 944B1BD1 509AE70D 1AC1A012 5098DF8E
768 t = 20: 95836DA5 6C445652 6512C6F4 509AE70D 1AC1A012
769 t = 21: 09511177 95836DA5 9B111594 6512C6F4 509AE70D
770 t = 22: E2B92DC4 09511177 6560DB69 9B111594 6512C6F4
771 t = 23: FD224575 E2B92DC4 C254445D 6560DB69 9B111594
772 t = 24: EEB82D9A FD224575 38AE4B71 C254445D 6560DB69
773 t = 25: 5A142C1A EEB82D9A 7F48915D 38AE4B71 C254445D
774 t = 26: 2972F7C7 5A142C1A BBAE0B66 7F48915D 38AE4B71
775 t = 27: D526A644 2972F7C7 96850B06 BBAE0B66 7F48915D
776 t = 28: E1122421 D526A644 CA5CBDF1 96850B06 BBAE0B66
777 t = 29: 05B457B2 E1122421 3549A991 CA5CBDF1 96850B06
778 t = 30: A9C84BEC 05B457B2 78448908 3549A991 CA5CBDF1
779 t = 31: 52E31F60 A9C84BEC 816D15EC 78448908 3549A991
780 t = 32: 5AF3242C 52E31F60 2A7212FB 816D15EC 78448908
781 t = 33: 31C756A9 5AF3242C 14B8C7D8 2A7212FB 816D15EC
782 t = 34: E9AC987C 31C756A9 16BCC90B 14B8C7D8 2A7212FB
783 t = 35: AB7C32EE E9AC987C 4C71D5AA 16BCC90B 14B8C7D8
784 t = 36: 5933FC99 AB7C32EE 3A6B261F 4C71D5AA 16BCC90B
785 t = 37: 43F87AE9 5933FC99 AADF0CBB 3A6B261F 4C71D5AA
786 t = 38: 24957F22 43F87AE9 564CFF26 AADF0CBB 3A6B261F
787 t = 39: ADEB7478 24957F22 50FE1EBA 564CFF26 AADF0CBB
788 t = 40: D70E5010 ADEB7478 89255FC8 50FE1EBA 564CFF26
789 t = 41: 79BCFB08 D70E5010 2B7ADD1E 89255FC8 50FE1EBA
790 t = 42: F9BCB8DE 79BCFB08 35C39404 2B7ADD1E 89255FC8
791 t = 43: 633E9561 F9BCB8DE 1E6F3EC2 35C39404 2B7ADD1E
792 t = 44: 98C1EA64 633E9561 BE6F2E37 1E6F3EC2 35C39404
793 t = 45: C6EA241E 98C1EA64 58CFA558 BE6F2E37 1E6F3EC2
794 t = 46: A2AD4F02 C6EA241E 26307A99 58CFA558 BE6F2E37
795 t = 47: C8A69090 A2AD4F02 B1BA8907 26307A99 58CFA558
796 t = 48: 88341600 C8A69090 A8AB53C0 B1BA8907 26307A99
797 t = 49: 7E846F58 88341600 3229A424 A8AB53C0 B1BA8907
798 t = 50: 86E358BA 7E846F58 220D0580 3229A424 A8AB53C0
799 t = 51: 8D2E76C8 86E358BA 1FA11BD6 220D0580 3229A424
800 t = 52: CE892E10 8D2E76C8 A1B8D62E 1FA11BD6 220D0580
801 t = 53: EDEA95B1 CE892E10 234B9DB2 A1B8D62E 1FA11BD6
802 t = 54: 36D1230A EDEA95B1 33A24B84 234B9DB2 A1B8D62E
803 t = 55: 776C3910 36D1230A 7B7AA56C 33A24B84 234B9DB2
804 t = 56: A681B723 776C3910 8DB448C2 7B7AA56C 33A24B84
805 t = 57: AC0A794F A681B723 1DDB0E44 8DB448C2 7B7AA56C
806 t = 58: F03D3782 AC0A794F E9A06DC8 1DDB0E44 8DB448C2
807 t = 59: 9EF775C3 F03D3782 EB029E53 E9A06DC8 1DDB0E44
808 t = 60: 36254B13 9EF775C3 BC0F4DE0 EB029E53 E9A06DC8
809 t = 61: 4080D4DC 36254B13 E7BDDD70 BC0F4DE0 EB029E53
810 t = 62: 2BFAF7A8 4080D4DC CD8952C4 E7BDDD70 BC0F4DE0
811 t = 63: 513F9CA0 2BFAF7A8 10203537 CD8952C4 E7BDDD70
812 t = 64: E5895C81 513F9CA0 0AFEBDEA 10203537 CD8952C4
813 t = 65: 1037D2D5 E5895C81 144FE728 0AFEBDEA 10203537
814 t = 66: 14A82DA9 1037D2D5 79625720 144FE728 0AFEBDEA
815 t = 67: 6D17C9FD 14A82DA9 440DF4B5 79625720 144FE728
816 t = 68: 2C7B07BD 6D17C9FD 452A0B6A 440DF4B5 79625720
817 t = 69: FDF6EFFF 2C7B07BD 5B45F27F 452A0B6A 440DF4B5
818 t = 70: 112B96E3 FDF6EFFF 4B1EC1EF 5B45F27F 452A0B6A
819 t = 71: 84065712 112B96E3 FF7DBBFF 4B1EC1EF 5B45F27F
820 t = 72: AB89FB71 84065712 C44AE5B8 FF7DBBFF 4B1EC1EF
821 t = 73: C5210E35 AB89FB71 A10195C4 C44AE5B8 FF7DBBFF
822 t = 74: 352D9F4B C5210E35 6AE27EDC A10195C4 C44AE5B8
823 t = 75: 1A0E0E0A 352D9F4B 7148438D 6AE27EDC A10195C4
824 t = 76: D0D47349 1A0E0E0A CD4B67D2 7148438D 6AE27EDC
825 t = 77: AD38620D D0D47349 86838382 CD4B67D2 7148438D
826 t = 78: D3AD7C25 AD38620D 74351CD2 86838382 CD4B67D2
827 t = 79: 8CE34517 D3AD7C25 6B4E1883 74351CD2 86838382.
829 Block 1 has been processed. The values of {Hi} are
831 H0 = 67452301 + 8CE34517 = F4286818
833 H1 = EFCDAB89 + D3AD7C25 = C37B27AE
835 H2 = 98BADCFE + 6B4E1883 = 0408F581
837 H3 = 10325476 + 74351CD2 = 84677148
839 H4 = C3D2E1F0 + 86838382 = 4A566572.
841 Start processing block 2. The words of block 2 are
860 The hex values of A,B,C,D,E after pass t of the for "t = 0 to 79" loop
861 (step (d) of Section 7 or step (c) of Section 8) are
865 t = 0: 2DF257E9 F4286818 B0DEC9EB 0408F581 84677148
866 t = 1: 4D3DC58F 2DF257E9 3D0A1A06 B0DEC9EB 0408F581
867 t = 2: C352BB05 4D3DC58F 4B7C95FA 3D0A1A06 B0DEC9EB
868 t = 3: EEF743C6 C352BB05 D34F7163 4B7C95FA 3D0A1A06
869 t = 4: 41E34277 EEF743C6 70D4AEC1 D34F7163 4B7C95FA
870 t = 5: 5443915C 41E34277 BBBDD0F1 70D4AEC1 D34F7163
871 t = 6: E7FA0377 5443915C D078D09D BBBDD0F1 70D4AEC1
872 t = 7: C6946813 E7FA0377 1510E457 D078D09D BBBDD0F1
873 t = 8: FDDE1DE1 C6946813 F9FE80DD 1510E457 D078D09D
874 t = 9: B8538ACA FDDE1DE1 F1A51A04 F9FE80DD 1510E457
875 t = 10: 6BA94F63 B8538ACA 7F778778 F1A51A04 F9FE80DD
876 t = 11: 43A2792F 6BA94F63 AE14E2B2 7F778778 F1A51A04
877 t = 12: FECD7BBF 43A2792F DAEA53D8 AE14E2B2 7F778778
878 t = 13: A2604CA8 FECD7BBF D0E89E4B DAEA53D8 AE14E2B2
879 t = 14: 258B0BAA A2604CA8 FFB35EEF D0E89E4B DAEA53D8
880 t = 15: D9772360 258B0BAA 2898132A FFB35EEF D0E89E4B
881 t = 16: 5507DB6E D9772360 8962C2EA 2898132A FFB35EEF
882 t = 17: A51B58BC 5507DB6E 365DC8D8 8962C2EA 2898132A
883 t = 18: C2EB709F A51B58BC 9541F6DB 365DC8D8 8962C2EA
884 t = 19: D8992153 C2EB709F 2946D62F 9541F6DB 365DC8D8
885 t = 20: 37482F5F D8992153 F0BADC27 2946D62F 9541F6DB
886 t = 21: EE8700BD 37482F5F F6264854 F0BADC27 2946D62F
887 t = 22: 9AD594B9 EE8700BD CDD20BD7 F6264854 F0BADC27
888 t = 23: 8FBAA5B9 9AD594B9 7BA1C02F CDD20BD7 F6264854
889 t = 24: 88FB5867 8FBAA5B9 66B5652E 7BA1C02F CDD20BD7
890 t = 25: EEC50521 88FB5867 63EEA96E 66B5652E 7BA1C02F
891 t = 26: 50BCE434 EEC50521 E23ED619 63EEA96E 66B5652E
892 t = 27: 5C416DAF 50BCE434 7BB14148 E23ED619 63EEA96E
893 t = 28: 2429BE5F 5C416DAF 142F390D 7BB14148 E23ED619
894 t = 29: 0A2FB108 2429BE5F D7105B6B 142F390D 7BB14148
895 t = 30: 17986223 0A2FB108 C90A6F97 D7105B6B 142F390D
896 t = 31: 8A4AF384 17986223 028BEC42 C90A6F97 D7105B6B
897 t = 32: 6B629993 8A4AF384 C5E61888 028BEC42 C90A6F97
898 t = 33: F15F04F3 6B629993 2292BCE1 C5E61888 028BEC42
899 t = 34: 295CC25B F15F04F3 DAD8A664 2292BCE1 C5E61888
900 t = 35: 696DA404 295CC25B FC57C13C DAD8A664 2292BCE1
901 t = 36: CEF5AE12 696DA404 CA573096 FC57C13C DAD8A664
902 t = 37: 87D5B80C CEF5AE12 1A5B6901 CA573096 FC57C13C
903 t = 38: 84E2A5F2 87D5B80C B3BD6B84 1A5B6901 CA573096
904 t = 39: 03BB6310 84E2A5F2 21F56E03 B3BD6B84 1A5B6901
905 t = 40: C2D8F75F 03BB6310 A138A97C 21F56E03 B3BD6B84
906 t = 41: BFB25768 C2D8F75F 00EED8C4 A138A97C 21F56E03
907 t = 42: 28589152 BFB25768 F0B63DD7 00EED8C4 A138A97C
908 t = 43: EC1D3D61 28589152 2FEC95DA F0B63DD7 00EED8C4
909 t = 44: 3CAED7AF EC1D3D61 8A162454 2FEC95DA F0B63DD7
910 t = 45: C3D033EA 3CAED7AF 7B074F58 8A162454 2FEC95DA
911 t = 46: 7316056A C3D033EA CF2BB5EB 7B074F58 8A162454
912 t = 47: 46F93B68 7316056A B0F40CFA CF2BB5EB 7B074F58
913 t = 48: DC8E7F26 46F93B68 9CC5815A B0F40CFA CF2BB5EB
914 t = 49: 850D411C DC8E7F26 11BE4EDA 9CC5815A B0F40CFA
915 t = 50: 7E4672C0 850D411C B7239FC9 11BE4EDA 9CC5815A
916 t = 51: 89FBD41D 7E4672C0 21435047 B7239FC9 11BE4EDA
917 t = 52: 1797E228 89FBD41D 1F919CB0 21435047 B7239FC9
918 t = 53: 431D65BC 1797E228 627EF507 1F919CB0 21435047
919 t = 54: 2BDBB8CB 431D65BC 05E5F88A 627EF507 1F919CB0
920 t = 55: 6DA72E7F 2BDBB8CB 10C7596F 05E5F88A 627EF507
921 t = 56: A8495A9B 6DA72E7F CAF6EE32 10C7596F 05E5F88A
922 t = 57: E785655A A8495A9B DB69CB9F CAF6EE32 10C7596F
923 t = 58: 5B086C42 E785655A EA1256A6 DB69CB9F CAF6EE32
924 t = 59: A65818F7 5B086C42 B9E15956 EA1256A6 DB69CB9F
925 t = 60: 7AAB101B A65818F7 96C21B10 B9E15956 EA1256A6
926 t = 61: 93614C9C 7AAB101B E996063D 96C21B10 B9E15956
927 t = 62: F66D9BF4 93614C9C DEAAC406 E996063D 96C21B10
928 t = 63: D504902B F66D9BF4 24D85327 DEAAC406 E996063D
929 t = 64: 60A9DA62 D504902B 3D9B66FD 24D85327 DEAAC406
930 t = 65: 8B687819 60A9DA62 F541240A 3D9B66FD 24D85327
931 t = 66: 083E90C3 8B687819 982A7698 F541240A 3D9B66FD
932 t = 67: F6226BBF 083E90C3 62DA1E06 982A7698 F541240A
933 t = 68: 76C0563B F6226BBF C20FA430 62DA1E06 982A7698
934 t = 69: 989DD165 76C0563B FD889AEF C20FA430 62DA1E06
935 t = 70: 8B2C7573 989DD165 DDB0158E FD889AEF C20FA430
936 t = 71: AE1B8E7B 8B2C7573 66277459 DDB0158E FD889AEF
937 t = 72: CA1840DE AE1B8E7B E2CB1D5C 66277459 DDB0158E
938 t = 73: 16F3BABB CA1840DE EB86E39E E2CB1D5C 66277459
939 t = 74: D28D83AD 16F3BABB B2861037 EB86E39E E2CB1D5C
940 t = 75: 6BC02DFE D28D83AD C5BCEEAE B2861037 EB86E39E
941 t = 76: D3A6E275 6BC02DFE 74A360EB C5BCEEAE B2861037
942 t = 77: DA955482 D3A6E275 9AF00B7F 74A360EB C5BCEEAE
943 t = 78: 58C0AAC0 DA955482 74E9B89D 9AF00B7F 74A360EB
944 t = 79: 906FD62C 58C0AAC0 B6A55520 74E9B89D 9AF00B7F.
946 Block 2 has been processed. The values of {Hi} are
948 H0 = F4286818 + 906FD62C = 84983E44
950 H1 = C37B27AE + 58C0AAC0 = 1C3BD26E
952 H2 = 0408F581 + B6A55520 = BAAE4AA1
954 H3 = 84677148 + 74E9B89D = F95129E5
956 H4 = 4A566572 + 9AF00B7F = E54670F1.
958 Message digest = 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
960 APPENDIX C. A THIRD SAMPLE MESSAGE AND ITS MESSAGE DIGEST
962 This appendix is for informational purposes only and is not required
963 to meet the standard.
965 Let the message be the binary-coded form of the ASCII string which consists
966 of 1,000,000 repetitions of "a".
968 Message digest = 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F