Where can I find a description of the SHA-0 hash algorithm? Where can I find the description and or pseudocode for the SHA-0 hash algorithm? I am looking for something on these lines: HMAC RIPEMD.

I have been implementing a few of those (HMAC, HOTP, TOTP and MD4, MD5, RIPEMD-128,160)
The reference on SHA(-0) is FIPS&nbsp;180 (archived scan) of 1993 May 11. The standard itself is referenced on the NIST website, but that links to another scan lacking page 1 and the one before, thus foreword, abstract, explanation... There's also this text draft of 1992 January 22 (also here with less indication on origin).



The Proposal for Change of that into SHA-1 was published on 1994 July 11 and is online at the Federal Register with partially garbled text, including for the security-critical change:


  In Section 7 of [1] (page 9), the line which reads
  &nbsp;&nbsp;&nbsp;&nbsp;(b)&nbsp;For&nbsp;t=16&nbsp;to&nbsp;79&nbsp;let&nbsp;Wt&nbsp;=&nbsp;Wt-3&nbsp;XOR&nbsp;Wt-8&nbsp;XOR&nbsp;Wt-14&nbsp;XOR&nbsp;Wt-16.
  is to be replaced by
  &nbsp;&nbsp;&nbsp;&nbsp;(b)&nbsp;For&nbsp;t=16&nbsp;to&nbsp;79&nbsp;let&nbsp;Wt&nbsp;=&nbsp;S1(Wt-3&nbsp;XOR&nbsp;Wt-8&nbsp;XOR&nbsp;Wt-14&nbsp;XOR&nbsp;Wt-16).
  where S1 is a left circular shift by one bit as defined in Section 
  3 of [1] (page 6), namely S1(X)&nbsp;=&nbsp;(X&nbsp;&lt;&lt;&nbsp;1)&nbsp;v&nbsp;(X&nbsp;&gt;&gt;&nbsp;31).


Note: What's kept of the original PfC has messed-up sub/superscripts (a modern web artifact), and misses the closing parenthesis on the modified expression for Wt (possibly an omission in the original).
This is was a technical change in the design, critical for improved security, rather than a correction of a typographical error as could be understood by casual reading of the PfC. This change was introduced without rationale, and initially without ensuing changes in the test vectors. It is thus reasonable to suspect that it was intentionally sneaked quietly, with knowledge that the original was not as secure as intended against educated collision attacks.

The revised document is FIPS&nbsp;180-1 of 1995 April 17, referenced on the NIST website (with a link to an external scan of the actual document).



Changing source code for SHA-1 into one for SHA(-0) is easy: just remove the one-bit rotations of a 32-bit word of the 512-bit message block. For example, in the reference implementation of RFC&nbsp;6234, change

W[t] = SHA1_ROTL(1, W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]);

to

W[t] =          (   W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]);