rs_sha512
rs_sha512
is a Rust crate implementing the SHA-512 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-512 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-512 is recommended for several use cases:
"SHA-512 provides 256 bits of security against collision attacks and, therefore, is suitable for functions requiring a hash length of 256 bits."
Given this advice, NIST recommendations imply that SHA-512 is suitable for the following contexts:
Beyond these specific recommendations, SHA-512 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_sha512
can be utilized as part of the rs_ssl
library bundle.
Below are steps to use the rs_sha512
crate in your Rust projects:
Add the following line to your Cargo.toml
under the [dependencies]
section:
toml
rs_sha512 = "0.1.*"
Use the functions provided by the rs_sha512
module in your code. Here's an example of how to create a SHA-512 hash from a string:
```rust use rs_sha512::{HasherContext, Sha512Hasher};
let mut sha512hasher = Sha512Hasher::default(); sha512hasher.write(b"your string here");
let u64result = sha512hasher.finish(); let bytesresult = HasherContext::finish(&mut sha512hasher); asserteq!(u64result, 0x3B9147CC94F9A792); asserteq!( format!("{bytesresult:02x}"), "3b9147cc94f9a7926fd175a4f7292adca33c467d94a0c9890e6ff581433e03fcb17f4874eb53876874c4d262baeb49decae0492dd19e37ef76d345926ff66744" ); asserteq!( format!("{bytesresult:02X}"), "3B9147CC94F9A7926FD175A4F7292ADCA33C467D94A0C9890E6FF581433E03FCB17F4874EB53876874C4D262BAEB49DECAE0492DD19E37EF76D345926FF66744" ); asserteq!( bytesresult, [ 0x3B, 0x91, 0x47, 0xCC, 0x94, 0xF9, 0xA7, 0x92, 0x6F, 0xD1, 0x75, 0xA4, 0xF7, 0x29, 0x2A, 0xDC, 0xA3, 0x3C, 0x46, 0x7D, 0x94, 0xA0, 0xC9, 0x89, 0x0E, 0x6F, 0xF5, 0x81, 0x43, 0x3E, 0x03, 0xFC, 0xB1, 0x7F, 0x48, 0x74, 0xEB, 0x53, 0x87, 0x68, 0x74, 0xC4, 0xD2, 0x62, 0xBA, 0xEB, 0x49, 0xDE, 0xCA, 0xE0, 0x49, 0x2D, 0xD1, 0x9E, 0x37, 0xEF, 0x76, 0xD3, 0x45, 0x92, 0x6F, 0xF6, 0x67, 0x44 ] ) ```
For a more detailed exploration of rs_sha512
, 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.