【发布时间】:2020-07-21 07:20:39
【问题描述】:
目前我正在使用以下代码来获取 Rust 结构和枚举的 sha256 哈希。
pub fn sha256<T: Sized + Serialize>(ser: T) -> [u8; 32] {
let str = ron::ser::to_string(&ser).expect("serialization has failed");
let mut hasher = Sha256::new();
hasher.update(str);
let hash = hasher.finalize();
*hash.as_ref()
}
这可行,但远非理想:
- 如果 RON 序列化改变,哈希值也会改变。
- 序列化正在浪费 CPU 周期。
在许多类型上都有一个.hash() 方法,但这似乎适用于 64 位非加密哈希(HashMap 等)。
如何对任意 Rust 结构和枚举进行加密散列,以便无论架构/字长/字节序如何,散列都是相同的? (我在这些中不使用usize。)
【问题讨论】:
标签: rust endianness sha256