Rust:如何对字符串进行哈希处理?

问题描述 投票:0回答:2

我正在尝试在 Rust 中创建一个控制台应用程序,您必须输入密码才能访问文件的其余部分,所以我想确保您不能只读取文件来查找密码,所以我想将密码存储为哈希值,因此它(不太可能)不可逆转。

我在 Rust 中查找了哈希,但当我尝试插入字符串时,它们似乎只能与结构一起使用。结构体是能够做到这一点的唯一方法吗?

rust hash cryptography
2个回答
2
投票
Rust 中的内置 Hash 类旨在处理数据以进入 HashMap 或 HashSet。这不适合密码验证。

如果您想执行密码验证,您应该使用像 Argon2id 或 scrypt 这样的密码哈希。您可以在

argon2

scrypt
 箱子中找到它们。密码哈希值始终占用字节,因此您需要以 
&[u8]
 的形式访问字符串。 
password_hash
 板条箱提供了可用于将其转换为序列化密码的特征。

如果您的目标是使用密码加密文件的其余部分,那么您应该使用 NaCl 的绑定之一。该库具有被设计为安全的原语。您可以使用带有随机盐的密码哈希功能来生成密钥,然后将其用作带有随机随机数的秘密框的密钥输入。还有其他方法可以做到这一点,但除非您精通密码学,否则使用 NaCl 是一个明智的选择,因为它更难被滥用。


0
投票
使用这个:

argon2="0.5"
在你的职能中

use argon2::{password_hash::{rand_core::OsRng, SaltString}, PasswordHasher}; pub async fn create_hash(password:String){ // OsRng OS's random number generator let salt=SaltString::generate(OsRng); let argon2=argon2::Argon2::default(); let password_hash=argon2.hash_password(password.as_bytes(), &salt).unwrap(); password_hash }
    
© www.soinside.com 2019 - 2024. All rights reserved.