Op 19-01-19 om 23:10 schreef Chet Ramey: > On 1/19/19 2:45 PM, Martijn Dekker wrote: >> Op 16-01-19 om 02:21 schreef Quentin: >>> If you really need some quality CSPRNG values, I'd suggest adding a >>> $SECURE_RANDOM variable that just reads from /dev/urandom. >> >> IMHO, this would clearly be the correct approach. I don't know of any >> 21st century Unix or Unix-like system that doesn't have /dev/urandom. I >> would really like to see shells adopt this idea -- hopefully all with >> the same variable name. > > OK, this is a reasonable approach. Since /dev/urandom just generates > random bytes, there's a lot of flexibility and we're not subject to > any kind of backwards compatibility constraints, especially not the > 16-bit limit. What do you think would be the best way to present that > to a user? As a 32-bit random number? A character string you can use to > create filenames? Some other form?
I'd say numbers would be the most useful, as these are the easiest to convert into anything else using shell arithmetic and parameter expansions. E.g. to create a random character string for a temporary file name, you could do filename_suffix() { chars=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 length=${#chars} for ((i=0; i<10; i++)) do printf '%s' "${chars:$(( SECURE_RANDOM % length + 1 )):1}" done } tmpfile=/tmp/myfile.$(filename_suffix) (which would of course already work with RANDOM but that would be totally insecure, as in not effectively eliminating the risk of collisions). - Martijn