#encryption #password #secure #tool #secure-password #compare

rscrypt

rscrypt is a simple, fast, and secure encryption tool written in Rust

1 unstable release

0.2.1 Mar 25, 2023
0.2.0 Mar 22, 2023
0.1.8 Oct 1, 2022
0.1.6 Aug 26, 2022
0.1.4 Jul 25, 2022

#1309 in Cryptography

Download history 3/week @ 2024-02-21 12/week @ 2024-02-28 152/week @ 2024-03-06

167 downloads per month

MIT license

11KB
187 lines

🔑 rscrypt

Rate this package

The Rscrypt library provides functionality for creating and verifying password hashes.

🚀 Installation

To use the rscrypt library in your Rust project, add it as a dependency in your Cargo.toml file:

[dependencies]
rscrypt = "*"

Then, run cargo build to download and compile the dependencies.

Alternatively, you can use the following command for adding the latest version of the library:

cargo add rscrypt

Once installed, you can import the library in your Rust code using:

use rscrypt::{ Rscrypt };

That's it! You're ready to use the rscrypt library in your Rust project.

🏗️ Struct Rscrypt

This struct provides the following utility functions:

🔎 Function compare(src: &str, dst: &str) -> bool

This function compares the plaintext password string src with the hashed password string dst. It returns true if they match, else false.

use rscrypt::{Rscrypt};

let salt = Rscrypt::gen_salt(10);
let hashed = Rscrypt::hash(&salt, "password");
assert!(Rscrypt::compare("password", &hash));

🔒 Function gen_salt(cost: usize) -> String

This function generates a random salt value that can be used for hashing a password. The cost argument determines the number of computational rounds to perform during hashing.

use rscrypt::{Rscrypt};

let salt = Rscrypt::gen_salt(10);
let hashed = Rscrypt::hash(&salt, "password");
assert!(Rscrypt::compare("password", &hashed));

🔍 Function get_salt(hash: &str) -> Option<String>

This function extracts the salt value used for hashing from the given hash string.

use rscrypt::{Rscrypt};

let hash = "iIBDWiEk0118e29VbozxVmoCscUzu6k05cKGFbtgogI=$rscrypt$0.2.0$10$rLBARHBrWKCsvACVvBAN7O";
let salt = Rscrypt::get_salt(&hash);
assert_eq!(salt, "$rscrypt$0.2.0$10$rLBARHBrWKCsvACVvBAN7O");

🚀 Function hash(salt: &str, unhashed_str: &str) -> String

This function hashes the plaintext password string unhashed_str with the given salt value salt.

use rscrypt::{Rscrypt};

let hashed = Rscrypt::hash("$rscrypt$0.2.0$10$rLBARHBrWKCsvACVvBAN7O", "password");
assert_eq!(
    hashed,
    "iIBDWiEk0118e29VbozxVmoCscUzu6k05cKGFbtgogI=$rscrypt$0.2.0$10$rLBARHBrWKCsvACVvBAN7O"
);

🕵️‍♀️ Function is_valid_hash(hash: &str) -> bool

This function returns true if the given hash string is a valid hashed password string, else false.

use rscrypt::{Rscrypt};

let hash = "iIBDWiEk0118e29VbozxVmoCscUzu6k05cKGFbtgogI=$rscrypt$0.2.0$10$rLBARHBrWKCsvACVvBAN7O";
assert!(Rscrypt::is_valid_hash(&hash));

📝 License

This project is licensed under the MIT License.

Dependencies

~2.8–4MB
~69K SLoC