sha2

Pure Rust implementation of the SHA-2 hash function family (SHA-224/256/384/512) with hardware-accelerated backends.

Library
Cargo
v0.11.1
2,280 stars
MIT OR Apache-2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
74 /100 Good
Development Activity 84
Maintenance 36
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 90
Code Quality 92
Innovation 88
Learning Curve 85

sha2 is the RustCrypto project’s pure-Rust implementation of the SHA-2 family of cryptographic hash functions, covering SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256. It implements the standard digest crate traits, so it drops into any Rust codebase that already speaks the RustCrypto hashing ecosystem (HMAC, PBKDF2, signature schemes, and so on) without bespoke glue code.

The crate is no_std by default, making it usable in embedded and WebAssembly targets as well as regular server and CLI applications, and it automatically selects hardware-accelerated backends (x86 SHA-NI/AVX2, AArch64 SHA2/SHA3 extensions, experimental RISC-V Zknh) at compile time with a portable software fallback when no acceleration is available.

What You Get

  • All six SHA-2 variants: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256
  • A unified Digest trait API shared with the rest of the RustCrypto hashing ecosystem
  • Automatic hardware-accelerated backend selection (x86 SHA-NI/AVX2, AArch64 sha2/sha3, LoongArch64 asm, WASM simd128) with a portable soft fallback
  • no_std support by default for embedded, kernel, and WebAssembly targets
  • Optional oid feature exposing ASN.1 object identifiers for each algorithm, and zeroize support for secure state wiping

Common Use Cases

  • Computing file or blob checksums and content-addressable hashes in Rust services and CLI tools
  • Deriving keys or verifying integrity as a building block inside HMAC, PBKDF2, TLS, or blockchain implementations
  • Hashing in no_std firmware or WebAssembly modules where a pure-Rust, dependency-light implementation is required
  • Interoperating with other RustCrypto crates (digest, hmac, pbkdf2, rsa) that expect the shared Digest/FixedOutput traits

Under The Hood

Architecture — lib.rs defines the six public hasher types (Sha224/Sha256/Sha384/Sha512/Sha512_224/Sha512_256) via the digest::buffer_fixed! macro, wrapping two shared block-level core types in block_api.rs (Sha256VarCore, Sha512VarCore) that implement the digest crate’s UpdateCore/VariableOutputCore/BlockSizeUser traits. Compression is delegated to compress256/compress512 functions defined in sha256.rs/sha512.rs, which use cfg-if to select, at compile time, one of several backend modules under src/sha256/ and src/sha512/ (soft, x86_sha, aarch64_sha2, aarch64_sha3, x86_avx2, riscv_zknh, loongarch64_asm, wasm32_simd128); initial hash state constants live in consts.rs. Tech Stack — pure Rust, edition 2024, MSRV 1.85, no_std by default; the only mandatory dependencies are digest (0.11, the shared RustCrypto hashing-trait crate) and cfg-if, with cpufeatures pulled in on x86/x86_64/aarch64 for runtime backend detection; optional alloc, zeroize, and oid Cargo features gate extra functionality, and several accelerated backends (e.g. x86_sha.rs, sha512/soft/unroll.rs) use targeted unsafe blocks for SIMD/asm intrinsics. Code Quality — tests/mod.rs drives NIST known-answer-test vectors from tests/data through digest’s own new_test!/fixed_reset_test and hash_serialization_test! macros for all six variants, plus dedicated sha256_rand/sha512_rand tests that hash 16 MiB of pseudorandom data through the incremental API against fixed expected digests — a strong regression net across backend implementations; the crate also enforces #![warn(missing_docs, unreachable_pub)] and ships benches under benches/mod.rs. API Design — the crate exposes the same ergonomic Digest trait shared across the RustCrypto ecosystem, offering both a one-shot Sha256::digest(data) call and an incremental new()/update()/finalize() pattern with no required configuration, so getting started needs only an import and a single method call, and each of the six algorithms is reachable under one canonical, consistently named type.

Used by 75 apps in this directory

TypeScript
63%
Apache 2.0

Laminar

AI Development · Monitoring

3,434

Open-source observability platform purpose-built for AI agents — trace, evaluate, debug, and monitor at scale with SQL access and real-time replay.

View details
86
Repo Health
76
Technical
65
Dependency
Built with
TypeScript 63%
Rust 35%
Updated 1 weeks ago
TypeScript
78%
LGPL 3.0

Latitude

AI Agents · Monitoring

4,733

Open-source AI agent monitoring that catches what will break next before your users do.

View details
87
Repo Health
88
Technical
67
Dependency
Built with
TypeScript 78%
Python 11%
Rust 11%
Updated 1 weeks ago
Dart
79%
Apache 2.0

LocalSend

Networking

95,370

An open-source, cross-platform AirDrop alternative that sends files and messages device-to-device over your local network with no internet, no account, and no cloud server involved.

View details
88
Repo Health
61
Technical
78
Dependency
Built with
Dart 79%
Rust 17%
Updated 1 weeks ago
JavaScript
55%
Other

Lokus

Knowledge Management · Note Taking

829

Local-first note-taking with graph view, canvas & AI plugins—your Markdown files, zero telemetry, blazing-fast Rust performance.

View details
75
Repo Health
75
Technical
64
Dependency
Built with
JavaScript 55%
HTML 21%
Rust 12%
Updated 2 months ago
Rust
60%
Apache 2.0

Magnitude

AI Development · Developer Tools

7,313

An open source inference engine that profiles your hardware, recommends the best local models, and tunes them for the coding agent you already use.

View details
79
Repo Health
83
Technical
71
Dependency
Built with
Rust 60%
TypeScript 25%
Updated 1 weeks ago
TypeScript
92%
Apache 2.0

Apache Maka

AI Agents · AI Development · Developer Tools

5,868

An Apache-incubated agent workspace that treats every model call, tool run, and permission decision as an append-only, replayable event log instead of disposable chat history.

View details
82
Repo Health
85
Technical
73
Dependency
Built with
TypeScript 92%
Updated 1 weeks ago
Rust
100%
Other

Meilisearch

Search

59,644

Lightning-fast hybrid search engine with AI-powered semantic and full-text retrieval for modern applications.

View details
90
Repo Health
88
Technical
67
Dependency
Built with
Rust 100%
Updated 1 weeks ago
TypeScript
95%
MIT

melty

AI Code Assistants · Code Editors · Developer Tools

5,462

The AI code editor where every chat message is a git commit you can revert, branch, or squash

View details
35
Repo Health
75
Technical
67
Dependency
Built with
TypeScript 95%
Updated 1 years ago
Rust
86%
Apache 2.0

mesh-llm

AI Agents · AI Development

3,551

Mesh LLM pools GPUs and memory across every machine you own into one OpenAI-compatible API, so agents tap distributed compute instead of a single GPU box or a metered cloud bill.

View details
85
Repo Health
91
Technical
69
Dependency
Built with
Rust 86%
TypeScript 10%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers