Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在rust中生成安全随机字节_Security_Random_Rust - Fatal编程技术网

Security 在rust中生成安全随机字节

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”-环库中有相当多的间接性,但我相

我正在尝试使用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”-环库中有相当多的间接性,但我相信它应该:

首先,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);