27 releases

0.11.0-pre.4 Jul 26, 2024
0.11.0-pre.3 Feb 1, 2024
0.11.0-pre.2 Jan 17, 2024
0.10.6 Sep 21, 2023
0.0.3 Nov 21, 2014

#15 in Cryptography

Download history 1387675/week @ 2024-10-28 1378083/week @ 2024-11-04 1366726/week @ 2024-11-11 1375452/week @ 2024-11-18 1224444/week @ 2024-11-25 1429735/week @ 2024-12-02 1729540/week @ 2024-12-09 1401023/week @ 2024-12-16 692294/week @ 2024-12-23 858310/week @ 2024-12-30 1510203/week @ 2025-01-06 1649960/week @ 2025-01-13 1535889/week @ 2025-01-20 1660079/week @ 2025-01-27 1836892/week @ 2025-02-03 1822175/week @ 2025-02-10

6,948,818 downloads per month
Used in 6,978 crates (704 directly)

MIT/Apache

32KB
669 lines

RustCrypto: SHA-1

crate Docs Apache2/MIT licensed Rust Version Project Chat Build Status

Pure Rust implementation of the SHA-1 cryptographic hash algorithm.

🚨 Warning: Cryptographically Broken! 🚨

The SHA-1 hash function should be considered cryptographically broken and unsuitable for further use in any security critical capacity, as it is practically vulnerable to chosen-prefix collisions.

We provide this crate for legacy interoperability purposes only.

If possible use the sha1-checked crate, while slower it provides the ability to detect potential collisions, as well as generate alternative safe hashes.

Examples

One-shot API

use hex_literal::hex;
use sha1::{Sha1, Digest};

let result = Sha1::digest(b"hello world");
assert_eq!(result, hex!("2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"));

Incremental API

use hex_literal::hex;
use sha1::{Sha1, Digest};

let mut hasher = Sha1::new();
hasher.update(b"hello world");
let hash = hasher.finalize();

assert_eq!(hash, hex!("2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"));

// Hex-encode hash using https://docs.rs/base16ct
let hex_hash = base16ct::lower::encode_string(&hash);
assert_eq!(hex_hash, "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed");

Also, see the examples section in the RustCrypto/hashes readme.

Minimum Supported Rust Version

Rust 1.72 or higher.

Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.

SemVer Policy

  • All on-by-default features of this library are covered by SemVer
  • MSRV is considered exempt from SemVer as noted above

License

The crate is licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~320–550KB
~12K SLoC

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy