private void ExpectComposite (BigInteger bi)
{
- Assertion.AssertEquals (false, bi.IsProbablePrime ());
+ Assert.AreEqual (false, bi.IsProbablePrime ());
}
private void ExpectPrime (BigInteger bi)
{
- Assertion.AssertEquals (true, bi.IsProbablePrime ());
+ Assert.AreEqual (true, bi.IsProbablePrime ());
}
}
// Adapted from http://lists.ximian.com/archives/public/mono-devel-list/2003-November/003026.html
// Note: these primes are taken from RFC 2412 [http://www.faqs.org/rfcs/rfc2412.html]
[TestFixture]
- public class Rfc2412WellTestedPrimes : Assertion {
+ public class Rfc2412WellTestedPrimes {
// E.1. Well-Known Group 1: A 768 bit prime
[Test]
{
string prime = "1552518092300708935130918131258481755631334049434514313202351194902966239949102107258669453876591642442910007680288864229150803718918046342632727613031282983744380820890196288509170691316593175367469551763119843371637221007210577919";
BigInteger bi = BigInteger.Parse (prime);
- Assert ("isProbablePrime-768", bi.IsProbablePrime ());
- AssertEquals ("ToString()", prime, bi.ToString ());
+ Assert.IsTrue (bi.IsProbablePrime (), "isProbablePrime-768");
+ Assert.AreEqual (prime, bi.ToString (), "ToString()");
}
// E.2. Well-Known Group 2: A 1024 bit prime
{
string prime = "179769313486231590770839156793787453197860296048756011706444423684197180216158519368947833795864925541502180565485980503646440548199239100050792877003355816639229553136239076508735759914822574862575007425302077447712589550957937778424442426617334727629299387668709205606050270810842907692932019128194467627007";
BigInteger bi = BigInteger.Parse (prime);
- Assert ("isProbablePrime-1024", bi.IsProbablePrime ());
- AssertEquals ("ToString()", prime, bi.ToString ());
+ Assert.IsTrue (bi.IsProbablePrime (), "isProbablePrime-1024");
+ Assert.AreEqual (prime, bi.ToString (), "ToString()");
}
// Note: E.3 and E.4 are for Elliptic Curve Groups
{
string prime = "2410312426921032588552076022197566074856950548502459942654116941958108831682612228890093858261341614673227141477904012196503648957050582631942730706805009223062734745341073406696246014589361659774041027169249453200378729434170325843778659198143763193776859869524088940195577346119843545301547043747207749969763750084308926339295559968882457872412993810129130294592999947926365264059284647209730384947211681434464714438488520940127459844288859336526896320919633919";
BigInteger bi = BigInteger.Parse (prime);
- Assert ("isProbablePrime-1536", bi.IsProbablePrime ());
- AssertEquals ("ToString()", prime, bi.ToString ());
+ Assert.IsTrue (bi.IsProbablePrime (), "isProbablePrime-1536");
+ Assert.AreEqual (prime, bi.ToString (), "ToString()");
+ }
+ }
+
+ // http://primes.utm.edu/lists/small/small.html
+ // note: BigInteger.IsProbablePrime defaults to Prime.ConfidenceFactor.Medium
+ [TestFixture]
+ public class SmallRandomPrimes {
+
+ private void AssertPrime (ulong value)
+ {
+ Assert.IsTrue (new BigInteger (value).IsProbablePrime (), value.ToString ());
+ }
+
+ private void AssertPrime (string value)
+ {
+ Assert.IsTrue (BigInteger.Parse (value).IsProbablePrime (), value);
+ }
+
+ [Test]
+ public void IsProbablePrime_10_digits ()
+ {
+ AssertPrime (5915587277);
+ AssertPrime (1500450271);
+ AssertPrime (3267000013);
+ AssertPrime (5754853343);
+ AssertPrime (4093082899);
+ AssertPrime (9576890767);
+ AssertPrime (3628273133);
+ AssertPrime (2860486313);
+ AssertPrime (5463458053);
+ AssertPrime (3367900313);
+ }
+
+ [Test]
+ public void IsProbablePrime_20_digits ()
+ {
+ AssertPrime ("48112959837082048697");
+ AssertPrime ("54673257461630679457");
+ AssertPrime ("29497513910652490397");
+ AssertPrime ("40206835204840513073");
+ AssertPrime (12764787846358441471);
+ AssertPrime ("71755440315342536873");
+ AssertPrime ("45095080578985454453");
+ AssertPrime ("27542476619900900873");
+ AssertPrime ("66405897020462343733");
+ AssertPrime ("36413321723440003717");
+ }
+
+ [Test]
+ public void IsProbablePrime_30_digits ()
+ {
+ AssertPrime ("671998030559713968361666935769");
+ AssertPrime ("282174488599599500573849980909");
+ AssertPrime ("521419622856657689423872613771");
+ AssertPrime ("362736035870515331128527330659");
+ AssertPrime ("115756986668303657898962467957");
+ AssertPrime ("590872612825179551336102196593");
+ AssertPrime ("564819669946735512444543556507");
+ AssertPrime ("513821217024129243948411056803");
+ AssertPrime ("416064700201658306196320137931");
+ AssertPrime ("280829369862134719390036617067");
+ }
+
+ [Test]
+ public void IsProbablePrime_40_digits ()
+ {
+ AssertPrime ("2425967623052370772757633156976982469681");
+ AssertPrime ("1451730470513778492236629598992166035067");
+ AssertPrime ("6075380529345458860144577398704761614649");
+ AssertPrime ("3615415881585117908550243505309785526231");
+ AssertPrime ("5992830235524142758386850633773258681119");
+ AssertPrime ("4384165182867240584805930970951575013697");
+ AssertPrime ("5991810554633396517767024967580894321153");
+ AssertPrime ("6847944682037444681162770672798288913849");
+ AssertPrime ("4146162919458530168953357282201621124057");
+ AssertPrime ("5570373270183181665098052481109678989411");
+ }
+
+ [Test]
+ public void IsProbablePrime_50_digits ()
+ {
+ AssertPrime ("22953686867719691230002707821868552601124472329079");
+ AssertPrime ("30762542250301270692051460539586166927291732754961");
+ AssertPrime ("29927402397991286489627837734179186385188296382227");
+ AssertPrime ("46484729803540183101830167875623788794533441216779");
+ AssertPrime ("95647806479275528135733781266203904794419563064407");
+ AssertPrime ("64495327731887693539738558691066839103388567300449");
+ AssertPrime ("58645563317564309847334478714939069495243200674793");
+ AssertPrime ("48705091355238882778842909230056712140813460157899");
+ AssertPrime ("15452417011775787851951047309563159388840946309807");
+ AssertPrime ("53542885039615245271174355315623704334284773568199");
+ }
+
+ [Test]
+ public void IsProbablePrime_60_digits ()
+ {
+ AssertPrime ("622288097498926496141095869268883999563096063592498055290461");
+ AssertPrime ("610692533270508750441931226384209856405876657993997547171387");
+ AssertPrime ("668486051696691190102895306426999370394054817506916629001851");
+ AssertPrime ("313539589974026666385010319707341761012894704055733952484113");
+ AssertPrime ("470287785858076441566723507866751092927015824834881906763507");
+ AssertPrime ("361720912810755408215708460645842859722715865206816237944587");
+ AssertPrime ("378348910233465647859184421334615532543749747185321634086219");
+ AssertPrime ("669483106578092405936560831017556154622901950048903016651289");
+ AssertPrime ("351300033958683656629281197430236951045077917074227778834807");
+ AssertPrime ("511704374946917490638851104912462284144240813125071454126151");
+ }
+
+ [Test]
+ public void IsProbablePrime_70_digits ()
+ {
+ AssertPrime ("4669523849932130508876392554713407521319117239637943224980015676156491");
+ AssertPrime ("4906275427767802358357703730938087362176142642699093827933107888253709");
+ AssertPrime ("2409130781894986571956777721649968801511465915451196376269177305066867");
+ AssertPrime ("7595009151080016652449223792726748985452052945413160073645842090827711");
+ AssertPrime ("3822535632033509464266159811805197854872067042990716005808372194664933");
+ AssertPrime ("5885903965180586669073549360644800583458138238012033647539649735017287");
+ AssertPrime ("5850725702766829291491370712136286009948642125131436113342815786444567");
+ AssertPrime ("4237080979868607742750808600846638318022863593147774739556427943294937");
+ AssertPrime ("3773180816219384606784189538899553110499442295782576702222280384917551");
+ AssertPrime ("9547848065153773335707495885453566120069130270246768806790708393909999");
+ }
+
+ [Test]
+ public void IsProbablePrime_80_digits ()
+ {
+ AssertPrime ("18532395500947174450709383384936679868383424444311405679463280782405796233163977");
+ AssertPrime ("39688644836832882526173831577536117815818454437810437210221644553381995813014959");
+ AssertPrime ("44822481511601066098713481453161748979849764719554039096395688045048053310178487");
+ AssertPrime ("54875133386847519273109693154204970395475080920935355580245252923343305939004903");
+ AssertPrime ("40979218404449071854385509743772465043384063785613460568705289173181846900181503");
+ AssertPrime ("56181069873486948735852120493417527485226565150317825065106074926567306630125961");
+ AssertPrime ("19469495355310348270990592580191998639221450743640952620236903851789700309402857");
+ AssertPrime ("34263233064835421125264776608163440537925705997962346596977803462033841059628723");
+ AssertPrime ("14759984361802021245410475928101669395348791811705709117374129427051861355011151");
+ AssertPrime ("67120333368520272532940669112228025474970578938046280618394371551488988323794243");
+ }
+
+ [Test]
+ public void IsProbablePrime_90_digits ()
+ {
+ AssertPrime ("282755483533707287054752184321121345766861480697448703443857012153264407439766013042402571");
+ AssertPrime ("370332600450952648802345609908335058273399487356359263038584017827194636172568988257769601");
+ AssertPrime ("463199005416013829210323411514132845972525641604435693287586851332821637442813833942427923");
+ AssertPrime ("374413471625854958269706803072259202131399386829497836277471117216044734280924224462969371");
+ AssertPrime ("664869143773196608462001772779382650311673568542237852546715913135688434614731717844868261");
+ AssertPrime ("309133826845331278722882330592890120369379620942948199356542318795450228858357445635314757");
+ AssertPrime ("976522637021306403150551933319006137720124048624544172072735055780411834104862667155922841");
+ AssertPrime ("635752334942676003169313626814655695963315290125751655287486460091602385142405742365191277");
+ AssertPrime ("625161793954624746211679299331621567931369768944205635791355694727774487677706013842058779");
+ AssertPrime ("204005728266090048777253207241416669051476369216501266754813821619984472224780876488344279");
+ }
+
+ [Test]
+ public void IsProbablePrime_100_digits ()
+ {
+ AssertPrime ("2074722246773485207821695222107608587480996474721117292752992589912196684750549658310084416732550077");
+ AssertPrime ("2367495770217142995264827948666809233066409497699870112003149352380375124855230068487109373226251983");
+ AssertPrime ("1814159566819970307982681716822107016038920170504391457462563485198126916735167260215619523429714031");
+ AssertPrime ("5371393606024775251256550436773565977406724269152942136415762782810562554131599074907426010737503501");
+ AssertPrime ("6513516734600035718300327211250928237178281758494417357560086828416863929270451437126021949850746381");
+ AssertPrime ("5628290459057877291809182450381238927697314822133923421169378062922140081498734424133112032854812293");
+ AssertPrime ("2908511952812557872434704820397229928450530253990158990550731991011846571635621025786879881561814989");
+ AssertPrime ("2193992993218604310884461864618001945131790925282531768679169054389241527895222169476723691605898517");
+ AssertPrime ("5202642720986189087034837832337828472969800910926501361967872059486045713145450116712488685004691423");
+ AssertPrime ("7212610147295474909544523785043492409969382148186765460082500085393519556525921455588705423020751421");
+ }
+
+ [Test]
+ public void IsProbablePrime_200_digits ()
+ {
+ AssertPrime ("58021664585639791181184025950440248398226136069516938232493687505822471836536824298822733710342250697739996825938232641940670857624514103125986134050997697160127301547995788468137887651823707102007839");
+ AssertPrime ("29072553456409183479268752003825253455672839222789445223234915115682921921621182714164684048719891059149763352939888629001652768286998932224000980861127751097886364432307005283784155195197202827350411");
+ AssertPrime ("41184172451867371867686906412307989908388177848827102865167949679167771021417488428983978626721272105583120243720400358313998904049755363682307706550788498535402989510396285940007396534556364659633739");
+ AssertPrime ("54661163828798316406139641599131347203445399912295442826728168170210404446004717881354193865401223990331513412680314853190460368937597393179445867548835085746203514200061810259071519181681661892618329");
+ AssertPrime ("71611195866368241734230315014260885890178941731009368469658803702463720956633120935294831101757574996161931982864195542669330457046568876289241536680683601749507786059442920003278263334056542642264651");
+ AssertPrime ("28591045597720075832628274729885724490653298360003309382769144463123258670807750560985604954275365591715208615509779345682419533206637382048824349415329839450792353652240682445321955199147316594996133");
+ AssertPrime ("49790921912819110019003521637763748399072771256062128988437189616228355821145834783451215869998723492323628198577054239101181556609916127864608488018093426129641387774385490891035446702272744866010729");
+ AssertPrime ("15474811206486587193258690501682404626361341756658894201908294153626080782693777003022566996735796983239343580281979005677758015801189957392350213806122307985157041153484138150252828152419133170303749");
+ AssertPrime ("12654646219963267405298825104551142450213038420566798208417393291567314379831789259173233506811083774527183953999862675239292185131178671317061020444490733287588383918793095608410078925861028249824377");
+ AssertPrime ("40992408416096028179761232532587525402909285099086220133403920525409552083528606215439915948260875718893797824735118621138192569490840098061133066650255608065609253901288801302035441884878187944219033");
+ }
+
+ [Test]
+ public void IsProbablePrime_300_digits ()
+ {
+ AssertPrime ("203956878356401977405765866929034577280193993314348263094772646453283062722701277632936616063144088173312372882677123879538709400158306567338328279154499698366071906766440037074217117805690872792848149112022286332144876183376326512083574821647933992961249917319836219304274280243803104015000563790123");
+ AssertPrime ("531872289054204184185084734375133399408303613982130856645299464930952178606045848877129147820387996428175564228204785846141207532462936339834139412401975338705794646595487324365194792822189473092273993580587964571659678084484152603881094176995594813302284232006001752128168901293560051833646881436219");
+ AssertPrime ("319705304701141539155720137200974664666792526059405792539680974929469783512821793995613718943171723765238853752439032835985158829038528214925658918372196742089464683960239919950882355844766055365179937610326127675178857306260955550407044463370239890187189750909036833976197804646589380690779463976173");
+ AssertPrime ("250556952327646214427246777488032351712139094643988394726193347352092526616305469220133287929222242315761834129196430398011844978805263868522770723615504744438638381670321613949280530254014602887707960375752016807510602846590492724216092721283154099469988532068424757856392563537802339735359978831013");
+ AssertPrime ("290245329165570025116016487217740287508837913295571609463914348778319654489118435855243301969001872061575755804802874062021927719647357060447135321577028929269578574760547268310055056867386875959045119093967972205124270441648450825188877095173754196346551952542599226295413057787340278528252358809329");
}
}
}