back toc next

Statistic of password generators

BEGIN { bytes = 0 }
{
    n=length($0)
    for(i=1; i<=n; i++)
	A[substr($0,i,1)]++
    bytes+=n
}
END {
    n = 0
    med = 0
    print bytes, "bytes"
    for(i in A)
    {
	med+=A[i]
	n++
    }
    print n, "chars"
    med/=n
    print "average frequency =", med
    var = 0;
    for(i in A)
	var+=(A[i]-med)^2/n
    print "variance =", var
    print "std. dev =", sqrt(var)
}

base64-encoded random values

bash$ (base64-encode < /dev/urandom | tr -d +/\\n | \ 
head -c "${1:-8000}" 2> /dev/null ; echo) | awk -f stat
8000 bytes
62 chars
average frequency = 129.032
variance = 108.354

passwords generated with pwgen

bash$ pwgen -c -n 8 1000|awk -f stat
8000 bytes
56 chars
average frequency = 142.857
variance = 38521.9