小编Pac*_*ari的帖子

以 String rust 形式返回哈希值

我想将哈希函数的输出打印到标准输出。我使用 groestl 哈希函数,但我认为它的工作原理与 sha 或其他函数相同。这样做会按预期打印哈希值:

fn create_hash<D: Digest>(msg: &str, mut hasher: D) -> GenericArray<u8, D::OutputSize> {
  hasher.update(msg);
  hasher.finalize()
}

fn main() {
  let hasher = Groestl256::default();
  let res = create_hash("asdfasdf", hasher);
  println!("{:x}", res);
}
Run Code Online (Sandbox Code Playgroud)

输出:db102d374ae45b130ae49e91dcc7b648b86ba1a0415a32dcce7806d46f316460

现在我想做一个匹配以使其他算法(Groestl512,...)也可用。

    let dig = match algorithm {
        HashTypes::groestl224 => {
            create_hash(message.as_ref().unwrap(), Groestl224::default())
        }
        HashTypes::groestl256 => {
            create_hash(message.as_ref().unwrap(), Groestl256::default())
        }
        HashTypes::groestl384 => {
            create_hash(message.as_ref().unwrap(), Groestl384::default())
        }
        HashTypes::groestl512 => {
            create_hash(message.as_ref().unwrap(), Groestl512::default())
        }
    };
    let res = HashGroestl::create_hash("asdfasdf", Groestl256::default());
    
    println!("Result: {:x}", res);
Run Code Online (Sandbox Code Playgroud)

由于返回数组的大小不同,这会导致匹配臂具有不兼容的类型。我试图通过返回一个字符串而不是 GenericArray 来绕过这个问题。

当我想返回一个字符串时,结果create_hash …

hash cryptography rust

6
推荐指数
1
解决办法
4424
查看次数

标签 统计

cryptography ×1

hash ×1

rust ×1