rokdocs
v0.1

3.10. crypto:: - OS 난수 원천

3.10.1. random

use rok::std::crypto::random;

mod random {
    fn fill(buf: List<u8>);          // 모든 바이트를 난수로 덮어씀
    fn bytes(n: usize) -> List<u8>;
    fn secret(n: usize) -> Secret;   // 비밀 저장소의 n 개 난수 바이트 (키, seed): 다른 사본 없음
}

바이트는 OS 의 암호학적으로 안전한 생성기에서 호출마다 읽습니다 (사용자 공간 pool 이 없으므로, fork 한 프로세스나 복원한 snapshot 이 random 이 buffer 한 출력을 반복하지 않음):

Target원천
Linux (gnu, musl; x86-64, AArch64, i686, ARMv7)flag 없는 getrandom(2): 커널 pool 이 초기화될 때까지 block 하고, 그 뒤로는 block 하지 않음
macOSgetentropy(2), 호출마다 최대 256 바이트
WindowsBCRYPT_USE_SYSTEM_PREFERRED_RNG 를 준 BCryptGenRandom
wasm32-wasi, wasm32-wasi-threadsWASI random_get (host 의 CSPRNG)
wasm32-unknown-unknownJavaScript host 의 crypto.getRandomValues (host 가 주는 random_get import 를 통해)

중단된 호출은 다시 시도합니다. 원천의 실패는 복구할 수 없습니다: fill 과 bytes 는 예측 가능한 바이트를 돌려주는 대신 panic 합니다. 알고리즘은 rok::core::crypto (2.21) 이며 무작위 입력 (키, seed, nonce, salt) 을 인자로 받습니다. net::tls (3.2.5) 는 그 모두를 여기서 꺼냅니다.

GitHub에서 이 페이지 고치기