1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
use block::{KeySchedule}; use u256::{u256}; pub struct Csprng { schedule: KeySchedule, prev: u256 } impl Csprng { pub fn new(seed: u256) -> Self { Csprng { schedule: KeySchedule::new(seed), prev: seed } } pub fn next(&mut self) -> u256 { let tmp = self.prev; self.prev = self.schedule.encrypt(self.prev); tmp } }