Bugs, as we should know by now, often lead to exploitable security vulnerabilities.
Generalizations of this idea would include using simple, easy to understand user interfaces; using simpler, easier-to-understand, though possibly less efficient algorithms when the performance requirements are not tight; using well understood, well tested library routines/modules in lieu of writing custom code (i.e., avoid the Not Invented Here (NIH) syndrome); etc.
It is infeasible to tabulate primes. Consider a modulus N, where |N|=n=1024 (lower case n is the number of bits in N). The prime number theorem says that the density of primes less than N is approximately 1/log(N). This means that the number of primes less than N, denoted pi(N), is N/log(N). (Natural logarithm.)
To figure out approximately how many primes there are that are 512-bits long -- N=P*Q, so if P and Q are the same length, they will be 512-bits long -- we compute the following:
number of primes with 512 or fewer bits is approx 2^512/(512 log(2)) number of primes with 511 or fewer bits is approx 2^511/(511 log(2)) so number of primes with exactly 512 bits is approx the difference, or 2^512/(512 log(2)) - 2^511/(511 log(2)) = 2^512/(512 log(2)) - 2^511 (512/511)/(512 log(2)) = (2*2^511 - 2^511 (512/511)) / (512 log(2)) = 2^511 * (2 - (512/511)) / (512 log(2)) which is slightly less than 2^511 * 1 / (512 log(2))still a very very large number.
Used computer contains sensitive data in files
bsy+cse127.w03@cs.ucsd.edu, last updated
email bsy.