Security 在rust中生成安全随机字节
我正在尝试使用ring::rand::Secure/SystemRandom生成一些安全的随机字节:Security 在rust中生成安全随机字节,security,random,rust,Security,Random,Rust,我正在尝试使用ring::rand::Secure/SystemRandom生成一些安全的随机字节: let mut randoms: [u8; 10] = [0; 10]; let sr = ring::rand::SystemRandom::new(); sr.fill(&randoms); // Error: fill method not found in `SystemRandom` 现在我不确定SystemRandom为什么不实现“fill”-环库中有相当多的间接性,但我相
let mut randoms: [u8; 10] = [0; 10];
let sr = ring::rand::SystemRandom::new();
sr.fill(&randoms); // Error: fill method not found in `SystemRandom`
现在我不确定SystemRandom为什么不实现“fill”-环库中有相当多的间接性,但我相信它应该:
首先,SystemRandom实现了sealed::SecureRandom:
impl sealed::SecureRandom for SystemRandom {
#[inline(always)]
fn fill_impl(&self, dest: &mut [u8]) -> Result<(), error::Unspecified> {
fill_impl(dest)
}
}
fill
需要一个randoms
。所以只要改变
sr.fill(&randoms);
到
“我不确定为什么这里需要泛型?”
sealed::SecureRandom
是一种特性,而不是一种类型。对于SecureRandom
,需要泛型。本质上,它是在说:实现sealed::SecureRandom
的每种类型T
也应该实现SecureRandom
,下面是如何实现的。
sr.fill(&randoms);
| ^^^^^^^^ types differ in mutability
sr.fill(&randoms);
sr.fill(&mut randoms);