如何从ring::hmac::Key 制作十六进制令牌?

问题描述 投票:0回答:1

我想在 Rust 中生成一个身份验证令牌。我尝试使用

ring::hmac
生成随机密钥,如下所示:

use ring::{hmac, rand};

let rng = rand::SystemRandom::new();
let key = hmac::Key::generate(hmac::HMAC_SHA256, &rng)?;

如何用

key
生成十六进制字符串?或者有没有更好的方法在 Rust 中生成十六进制的安全令牌?

rust bearer-token
1个回答
0
投票

如果您自己创建

Key
,则可以使用
Key::new()
代替
Key::generate
,这样可以明确指定
key_value

use ring::{digest, hmac, rand};

fn main() {
    let msg = "hello, world";

    let rng = rand::SystemRandom::new();
    let key_value: [u8; digest::SHA256_OUTPUT_LEN] = rand::generate(&rng).unwrap().expose();
    let hex = key_value.iter().map(|b| format!("{:02X}", b)).collect::<String>();
    println!("{}", hex);

    let s_key = hmac::Key::new(hmac::HMAC_SHA256, key_value.as_ref());
    let _tag = hmac::sign(&s_key, msg.as_bytes());
}

这是游乐场的链接

© www.soinside.com 2019 - 2024. All rights reserved.