$RANDOM
está disponível em ksh e no bash, mas não em /bin/sh
. O valor é um número aleatório entre 0 e 32768 e não é adequado para uso criptográfico.
A leitura de /dev/random
gera um fluxo de bytes aleatórios adequado para uso criptográfico. Como esses são bytes arbitrários, potencialmente incluindo bytes nulos, você não pode armazená-los em uma variável shell. Você pode armazenar $n
bytes em um arquivo com
</dev/random dd ibs=1 count=$n >rnd
Você pode usar od
para transformar esses bytes em uma representação imprimível usando valores octais ou hexadecimais. Se você achar a saída “estranha”, bem, talvez você devesse escolher diferentes opções od
.
Outra opção para obter uma representação imprimível é chamar uuencode
para produzir Base64:
</dev/random dd ibs=1 count=$n | uuencode -m _ | sed -e '1d' -e '$d'