How to use /dev/(u)random
How can I use /dev/(u)random
on Ubuntu or any *nix sistems?
I tried this but it says permission denied.
Note : I also tried as root.
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
It's a file like device, so you can do things like cat it or copy from it. For instance:
dd if=/dev/urandom of=~/urandom_test count=4 bs=1024
Creates a file containing 4K of random bytes.
cat /dev/urandom > ~/urandom_test2
Will continue to write random bytes to that file until you hit Ctrl-C. Don't do this on a low performing system...
head -30 /dev/urandom > ~/urandom_test3
Will write 30 lines of random bytes
Get random bytes
If you need a certain number of random bytes, read that number of bytes from /dev/urandom
.
It is a "special file" that is made to be like a file to read random numbers from.
Using cat
to read from /dev/urandom
is a bad idea, because it will try to read /dev/urandom
to the end - but it does not end.
You can use head
. But take care to read by byte, not by line - because lines would be randomly separated by random newline bytes.
So, to read 30 random bytes into a file random.bytes
, use:
head -c 30 /dev/urandom > random.bytes
You can read from it as a normal user.
Leave alone /dev/random
Normally, you want to use /dev/urandom
, not /dev/random
.
The problem is that /dev/random
is hard to use in the right way - and easy to use in a wrong way. Using it wrong works at first, but creates strange - even random - performance problems later. Sometimes.
When you use /dev/urandom
, it makes use of /dev/random
internally, taking care of the tricky parts.
If you want to just read it with recognized numbers you can do
od -d /dev/random