From ab32d1b9e1371d0ce97086d6a194913bff45a41a Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Sat, 15 Jun 2013 22:39:32 -0700 Subject: [PATCH] Avoid repeating bases in MillerRabin. --- src/ciphers/asymmetric/jsbn2.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ciphers/asymmetric/jsbn2.js b/src/ciphers/asymmetric/jsbn2.js index fb739f50..4f60185c 100644 --- a/src/ciphers/asymmetric/jsbn2.js +++ b/src/ciphers/asymmetric/jsbn2.js @@ -643,9 +643,15 @@ function bnpMillerRabin(t) { t = (t+1)>>1; if(t > lowprimes.length) t = lowprimes.length; var a = nbi(); + var j, bases = []; for(var i = 0; i < t; ++i) { //Pick bases at random, instead of starting at 2 - a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); + for (;;) { + j = lowprimes[Math.floor(Math.random() * lowprimes.length)]; + if (bases.indexOf(j) == -1) break; + } + bases.push(j); + a.fromInt(j); var y = a.modPow(r,this); if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { var j = 1;