Dev random

From Free Pascal wiki
Revision as of 01:32, 21 April 2013 by Jwdietrich (talk | contribs)
Jump to navigationJump to search

Summary

/dev/random and /dev/urandom are two Unix and *nix based devices that allow receives memory, disc, network dumps from the kernel. This allows us to use “random�? like seed for performing “random' tasks with the “random�? function.

The difference between /dev/random and /dev/urandom is the “blocking�? and “non blocking�? issue.

While /dev/random gives random seeds, it will wait until it will have something to give us, before returning the seed.

/dev/urandom does not stop us from when we do not have a new seed from dump, and will return also clock cycles that are less random. This way we will not need to wait until any type of activity will occur.

Coding

In order to make Free Pascal work with /dev/random and /dev/random we shall write the following code:

procedure RandomSeed;
var
 f : file of integer;
 i : integer;

begin
 i        := 0;
 filemode := 0;
 AssignFile(f, '/dev/urandom'); 
 reset (f,1);
 read (f,i);
 CloseFile (f);
 RandSeed := i;
end;

Explanation

Like everything else in *nix like OS, everything is a file! So, we access urandom as a file and we read only one integer at a time.

Then, we place the data we made as RandSeed (the seed number that the function random uses). And that's it, we have a random seeder for “random�? usage.