为了测试 Rust 内的 argon2id 在不同机器上的运行速度,我们可以编写一个简单的 Rust 程序来计算给定密码和参数的哈希值,并测量所需的时间。以下是一个基本的示例程序,它使用了 argon2 crate 来生成哈希值,并测量了生成哈希所需的时间。你可以将这个程序编译并运行在你的机器上,然后记录结果,以便与其他机器上的结果进行比较。

use argon2::{Config, Variant, Version};
use std::time::{SystemTime, UNIX_EPOCH};

fn print_type_of<T>(_: &T) {
    println!("The type is: {}", type_name::<T>());
}

fn main() {
    let start_date = {
        match SystemTime::now().duration_since(UNIX_EPOCH) {
            Ok(n) => n.as_nanos(),
            Err(_) => panic!("SystemTime before UNIX EPOCH!");
        }
    };
    let password = b"passwlaskjdadfasasdfafasfddfasewrwqrecoadifuoasdfuosauidfsdafarweqrordafadfsadadsadfasdasdsadasdasdfwqerqwerwqerpoiljhjkgkgdfkjhadfkljhadfgjgfdjksghadfjgadsgff";
    let salt = b"othersalt";
    let config = Config {
        variant: Variant::Argon2id,
        version: Version::Version13,
        mem_cost: 65536,
        time_cost: 1,
        lanes: 1,
        secret: &,
        ad: &,
        hash_length: 100,
    };

    let hash = argon2::hash_encoded(password, salt, &config).unwrap();
    println!("{:?}", hash);
    print_type_of(&hash);

    let end_date = {
        match SystemTime::now().duration_since(UNIX_EPOCH) {
            Ok(n) => n.as_nanos(),
            Err(_) => panic!("SystemTime before UNIX EPOCH!");
        }
    };
    println!("the start time was {}; the end time was {}; after clac was {}", start_date, end_date, end_date - start_date);
}

你可以将上述代码保存到一个名为 main.rs 的文件中,并使用 Cargo 创建一个新的 Rust 项目。在你的 Cargo.toml 文件中添加 argon2 依赖项,如下所示:

[package]
name = "learn_argon2idab"
version = "0.1.0"
edition = "2024"

[dependencies]
argon2 = "2.1"

然后,你可以使用以下命令来编译并运行程序:

cargo run

程序将输出哈希值以及计算所需的时间。你可以将这个时间与其他机器上的结果进行比较,以查看 argon2id 的性能差异。请注意,为了获得准确的结果,你应该在相同的环境下运行这个程序,并确保其他系统资源的使用情况相似。此外,你还可以调整 time_cost 和其他参数,以查看它们对性能的影响。

标签: none

评论已关闭