You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取类型为&[u8; 32]的SHA256摘要?

解决方案

你可以通过两种方式直接获取SHA256摘要的原始字节,避免十六进制字符串的来回转换:

方式一:使用当前sha256 crate的内置函数

该crate其实提供了直接返回字节的API,无需先转字符串:

  • digest_bytes_to_array 直接返回[u8; 32]类型的摘要
  • digest_bytes 返回Vec<u8>,可以轻松转为&[u8]切片

代码示例:

use sha256;

fn main() {
    let input_data = b"your input slice here";
    
    // 获取固定长度字节数组
    let digest_array: [u8; 32] = sha256::digest_bytes_to_array(input_data);
    
    // 获取字节切片(从Vec转换)
    let digest_vec = sha256::digest_bytes(input_data);
    let digest_slice: &[u8] = &digest_vec;
}

方式二:使用更底层的sha2 crate

如果需要更灵活的哈希操作,推荐使用sha2 crate(很多上层SHA256封装都是基于它实现的):

  1. 先在Cargo.toml中添加依赖:
[dependencies]
sha2 = "0.10"
  1. 代码示例:
use sha2::{Sha256, Digest};

fn compute_sha256(data: &[u8]) -> [u8; 32] {
    let mut hasher = Sha256::new();
    hasher.update(data);
    // finalize返回GenericArray,可直接转为[u8;32]
    hasher.finalize().into()
}

fn main() {
    let input = b"test data";
    let digest_bytes = compute_sha256(input);
    // 需要&[u8]的话直接取切片即可
    let digest_slice: &[u8] = &digest_bytes;
}

两种方式都跳过了十六进制字符串的转换步骤,完全消除了不必要的性能损耗。

内容的提问来源于stack exchange,提问作者fadedbee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 02:12:36