【发布时间】:2017-10-13 14:28:15
【问题描述】:
我正在尝试使用sodiumoxide 提供的SHA256 哈希函数来编写hash_string 函数。这个函数应该接受一个字符串并返回字符串的哈希值。
这是我目前所拥有的:
extern crate sodiumoxide;
use std::string::String;
use sodiumoxide::crypto::hash::sha256;
pub fn hash_string(s: String) -> String {
let digest = sha256::hash(&s.into_bytes());
String::from_utf8_unchecked(digest).to_owned()
}
显然这不正确,但我不知道如何解决。
我能够使用rust-crypto crate 实现这一点。
pub fn hash_string(input: String) -> String {
let mut sha = Sha256::new();
sha.input_str(&input);
sha.result_str()
}
我想完全按照上面的方法做,但改用氧化钠板条箱。
【问题讨论】:
-
请说明您认为不正确的原因。你测试过这个功能吗?您使用了哪些输入(可能具有已知的预期输出)?
-
它无法编译,所以我无法测试该功能。我不知道如何将digest 转换为字符串。
-
假设您理解哈希只是一个字节向量,很明显将它们解释为 UTF-8 字符串是错误的。您可能希望将其转换为文本表示形式(十六进制、Base64 等)。同样,您能否提供输入和预期输出?
-
能否提供编译错误?
-
您是如何从一组字节中得出该字符序列的?您是否可能使用过诸如“(十六进制,Base64 等)”之类的算法?或许您愿意与我们分享该算法?
标签: hash cryptography rust