如何在 Rust 中打印 SHA256 哈希?(使用 GenericArray)

5

我正在测试sha2库(https://docs.rs/sha2/0.9.3/sha2/)。

let base2: i32 = 2;
let total_size = base2.pow(24);
let mut data = vec![0u8;total_size as usize];
let mut hasher = Sha256::new();
hasher.update(data);
let result = hasher.finalize();
println!("sha256 before write: {}", result);

但是我无法打印出结果:

error[E0277]: `GenericArray<u8, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>` doesn't implement `std::fmt::Display`
  --> src/sha_check.rs:60:41
   |
60 |     println!("sha256 before write: {}", result);
   |                                         ^^^^^^ `GenericArray<u8, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>` cannot be formatted with the default formatter

如何转储 GenericArray

我尝试查找 .finalize(),但不知道它来自哪里。


SHA256 生成一系列原始字节,而您正在尝试将它们打印到(文本)终端上。您希望在屏幕上看到什么? - Silvio Mayolo
1个回答

10

GenericArray 实现了 LowerHexUpperHex。所以你可以执行以下任意一项:

println!("sha256 before write: {:x}", result);

sha256 before write: 080acf35a507ac9849cfcba47dc2ad83e01b75663a516279c8b9d243b719643e

或者

println!("sha256 before write: {:X}", result);

sha256 before write: 080ACF35A507AC9849CFCBA47DC2AD83E01B75663A516279C8B9D243B719643E

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接