Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

as a bash alias:

  word_pass() {
      cat /usr/share/dict/words | awk 'BEGIN{srand();}{print rand()"\t"$0}' | sort -k1 -n | cut -f2 | head -n 4 | tr "\\n" " " && echo 
  }
then:

  $ word_pass
  corticifugally tetraploidy democrat vibrionic
(if you notice how this works, you can see that it isn't super-efficient, but it works)


DANGER: This gives no more entropy than what srand() uses, which (at least for GNU awk) is simply the current UNIX time, which (if we assume that when you generated the password is known to within one year) means only about 25 bits of entropy.


srand in awk is platform specific. on most recent is isn't a straight call to srand().

I have another version that I use that stuffs srand but in the end I figured srand from a 250k dictionary is still better than picking words out of your head from a ~1k dictionary


I looked at the trunk code for gawk on Savannah when I wrote the above. It passes the output of time(0) straight into srand().

The size of the dictionary doesn't matter (given that it's more than about 70 words); the limiting factor is the entropy in the RNG seeding.


Using shuf, my favourite, rarely used gnu textutil.

    shuf /usr/share/dict/words|head -4|tr '\n' ' ';echo


ye it isn't on OS X

just the same, sort -R is GNU only and not POSIX




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: