我想在 Rust 中生成一个身份验证令牌。我尝试使用
ring::hmac
生成随机密钥,如下所示:
use ring::{hmac, rand};
let rng = rand::SystemRandom::new();
let key = hmac::Key::generate(hmac::HMAC_SHA256, &rng)?;
如何用
key
生成十六进制字符串?或者有没有更好的方法在 Rust 中生成十六进制的安全令牌?
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());
}
这是游乐场的链接。