Rust中如何调整SHA256计算逻辑,使其输出与在线工具十六进制模式结果一致
Rust SHA256 十六进制输入哈希结果不一致解决方案
你当前代码的逻辑是直接把十六进制格式的字符串input_data.secret作为普通UTF-8文本传入哈希器计算,而在线工具的十六进制输入模式会先把十六进制字符串解码为对应的原始二进制字节后再计算哈希,二者输入的原始内容完全不同,所以得到的哈希结果不一致。
你需要先对十六进制字符串做解码,得到原始字节后再传入哈希器计算,步骤如下:
- 首先在
Cargo.toml中引入十六进制解码依赖hex:
[dependencies] hex = "0.4" sha2 = "0.10"
- 调整业务代码,先解码再做哈希计算:
use hex::decode; use sha2::{Sha256, Digest}; // ... 其余逻辑保持不变 // 先将十六进制字符串解码为原始二进制字节 let secret_bytes = decode(input_data.secret).expect("输入包含无效十六进制字符"); let mut hasher = Sha256::default(); hasher.update(secret_bytes); let input_secret_hash: String = format!("{:x}", hasher.finalize());
调整后得到的哈希结果就和在线工具十六进制模式的输出一致。
内容的提问来源于stack exchange,提问作者Andon Mitev
相关产品推荐
相关产品推荐

