# Module crypto::sha1
[−]
[src]

An implementation of the SHA-1 cryptographic hash algorithm.

To use this module, first create a `Sha1`

object using the `Sha1`

constructor,
then feed it an input message using the `input`

or `input_str`

methods,
which may be called any number of times; they will buffer the input until
there is enough to call the block algorithm.

After the entire input has been fed to the hash read the result using
the `result`

or `result_str`

methods. The first will return bytes, and
the second will return a `String`

object of the same bytes represented
in hexadecimal form.

The `Sha1`

object may be reused to create multiple hashes by calling
the `reset()`

method. These traits are implemented by all hash digest
algorithms that implement the `Digest`

trait. An example of use is:

use self::crypto::digest::Digest; use self::crypto::sha1::Sha1; // create a Sha1 object let mut hasher = Sha1::new(); // write input message hasher.input_str("hello world"); // read hash digest let hex = hasher.result_str(); assert_eq!(hex, "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed");

# Mathematics

The mathematics of the SHA-1 algorithm are quite interesting. In its definition, The SHA-1 algorithm uses:

- 1 binary operation on bit-arrays:
- "exclusive or" (XOR)

- 2 binary operations on integers:
- "addition" (ADD)
- "rotate left" (ROL)

- 3 ternary operations on bit-arrays:
- "choose" (CH)
- "parity" (PAR)
- "majority" (MAJ)

Some of these functions are commonly found in all hash digest algorithms, but some, like "parity" is only found in SHA-1.

## Structs

Sha1 |
Structure representing the state of a Sha1 computation |

## Functions

sha1_digest_block |
Process a block with the SHA-1 algorithm. (See more...) |

sha1_digest_block_u32 |
Process a block with the SHA-1 algorithm. |

sha1_digest_round_x4 |
Emulates |

sha1_first |
Not an intrinsic, but gets the first element of a vector. |

sha1_first_add |
Not an intrinsic, but adds a word to the first element of a vector. |

sha1_first_half |
Emulates |

sha1_schedule_x4 |
Performs 4 rounds of the message schedule update. |