Gerar ASCII aleatório a partir do shell

Como normalmente fico em tela inteira no Chrome, normalmente peço à minha extensão LastPass alguns bytes aleatórios, mas se você precisar de algum ruído do terminal, isso pode ser muito útil.

Usando Ruby e com a Ascii85gem instalada:

cat /dev/urandom | ruby -rubygems -rascii85 -e "puts Ascii85.encode(STDIN.read(ARGV[0].to_i))[2...-2]" 12

/dev/urandomé uma fonte confiável de dados aleatórios fornecidos pela maioria dos sistemas operacionais baseados em UNIX. Sua qualidade nem sempre é tão alta quanto /dev/random, o que é mais exigente quanto às garantias que oferece, mas ainda é adequado para necessidades criptográficas.

O algoritmo Ascii85 é usado para converter o ruído puro gerado pelo /dev/urandom, que pode conter caracteres não imprimíveis e produzir strings ASCII limpas sem desperdiçar nenhum dos dados aleatórios.

O 12 no final é o número de bytes que você deseja ler /dev/urandom, não o comprimento da string de saída. 12 bytes aleatórios parecem produzir 16 bytes de resultado. Se você remover o número e colocar esta linha em um script de shell, poderá passar o número que desejar.