rs_sha256
rs_sha256
is a Rust crate implementing the SHA-256 cryptographic hash algorithm. Configured for compatibility with Rust's libcore within a #![no_std]
context, it operates as a standalone crate for specialized use cases and is also compatible with a #![no_std]
, #![no_alloc]
environment, rendering it suitable for systems where dynamic memory allocation is untenable.
This implementation of SHA-256 is compliant with the Federal Information Processing Standards (FIPS) Publication 180-4[^1]. In line with the National Institute of Standards and Technology (NIST) guidelines, SHA-256 is recommended for several use cases:
"SHA-256 provides 128 bits of security against collision attacks and, therefore, is suitable for functions requiring a hash length of 128 bits."
Given this advice, NIST recommendations imply that SHA-256 is suitable for the following contexts:
Beyond these specific recommendations, SHA-256 could also find application in:
Given your overall security objectives and risk tolerance, these points should be carefully considered.
For access to a comprehensive range of cryptographic functions, rs_sha256
can be utilized as part of the rs_ssl
library bundle.
Below are steps to use the rs_sha256
crate in your Rust projects:
Add the following line to your Cargo.toml
under the [dependencies]
section:
toml
rs_sha256 = "0.1.*"
Use the functions provided by the rs_sha256
module in your code. Here's an example of how to create a SHA-256 hash from a string:
```rust use rs_sha256::{HasherContext, Sha256Hasher};
let mut sha256hasher = Sha256Hasher::default(); sha256hasher.write(b"your string here");
let u64result = sha256hasher.finish(); let bytesresult = HasherContext::finish(&mut sha256hasher); asserteq!(u64result, 0xEBEA8483C5B21AE6); asserteq!(format!("{bytesresult:02x}"), "ebea8483c5b21ae61081786be10f9704ce8975e1e5b505c03f6ab8514ecc5c0c"); asserteq!(format!("{bytesresult:02X}"), "EBEA8483C5B21AE61081786BE10F9704CE8975E1E5B505C03F6AB8514ECC5C0C"); asserteq!( bytesresult, [ 0xEB, 0xEA, 0x84, 0x83, 0xC5, 0xB2, 0x1A, 0xE6, 0x10, 0x81, 0x78, 0x6B, 0xE1, 0x0F, 0x97, 0x04, 0xCE, 0x89, 0x75, 0xE1, 0xE5, 0xB5, 0x05, 0xC0, 0x3F, 0x6A, 0xB8, 0x51, 0x4E, 0xCC, 0x5C, 0x0C ] ) ```
For a more detailed exploration of rs_sha256
, an overview of other available cryptographic functions, and an introduction to the broader rs_ssl
project, please consult the RustySSL project page on crates.io.
Potential contributors are encouraged to consult the contribution guidelines on our GitHub page.
This project is licensed under GPL-2.0-only.
Note: The references have been provided as per the best knowledge as of Jun 02, 2023.