Compare commits

...

7 Commits

  1. 31
      crypto/WeierstrassCurve.java
  2. 99
      crypto/WeierstrassPoint.java
  3. 7
      crypto/a4.allkeys
  4. 159
      crypto/a4.cipher
  5. 1
      crypto/result.txt
  6. 65
      sample/Main.java

31
crypto/WeierstrassCurve.java

@ -0,0 +1,31 @@
package crypto;
import java.math.BigInteger;
public class WeierstrassCurve
{
public BigInteger a;
public BigInteger b;
public BigInteger mod;
public WeierstrassCurve(BigInteger a, BigInteger b, BigInteger mod)
{
this.a = a;
this.b = b;
this.mod = mod;
}
@Override
public boolean equals(Object otherobj)
{
if (!(otherobj instanceof WeierstrassCurve))
{
return false;
}
WeierstrassCurve other = (WeierstrassCurve) otherobj;
boolean b = this.a.equals(other.a) && this.b.equals(other.b) && this.mod.equals(other.mod);
if (b) return true;
else return false;
}
}

99
crypto/WeierstrassPoint.java

@ -0,0 +1,99 @@
package crypto;
import java.math.BigInteger;
public class WeierstrassPoint {
public BigInteger x;
public BigInteger y;
public WeierstrassCurve curve;
public boolean isIdentity;
public WeierstrassPoint(WeierstrassCurve curve)
{
this.x = null;
this.y = null;
this.curve = curve;
this.isIdentity = true;
}
public WeierstrassPoint(WeierstrassCurve curve, BigInteger x, BigInteger y)
{
// if (!y.multiply(y).mod(curve.mod).equals(x.modPow(BigInteger.ONE.add(BigInteger.ONE).add(BigInteger.ONE), curve.mod).add(x.multiply(curve.a)).add(curve.b).mod(curve.mod)))
// {
// System.out.println("x = " + x.toString());
// System.out.println("y = " + y.toString());
// System.out.println("m = " + curve.mod.toString());
// System.out.println("y^2 = " + y.multiply(y).mod(curve.mod).toString());
// System.out.println("x^3 + ax + b = " + x.modPow(BigInteger.ONE.add(BigInteger.ONE).add(BigInteger.ONE), curve.mod).add(x.multiply(curve.a)).add(curve.b).mod(curve.mod).toString());
// throw new ArithmeticException("Invalid points on elliptic curve");
// }
this.curve = curve;
this.x = x;
this.y = y;
this.isIdentity = false;
}
public WeierstrassPoint add(WeierstrassPoint other)
{
BigInteger x, y, m;
if (this.isIdentity)
return other;
if (other.isIdentity)
return this;
if (this.x.mod(curve.mod).equals(other.x.mod(curve.mod)))
{
if (this.y.mod(curve.mod).equals(other.y.mod(curve.mod)))
{
m = this.x.multiply(this.x).multiply(new BigInteger(new byte[]{3})).add(curve.a).multiply(this.y.add(this.y).modInverse(curve.mod));
} else
{
return new WeierstrassPoint(this.curve);
}
} else
{
m = other.y.add(this.y.negate()).multiply(other.x.add(this.x.negate()).modInverse(curve.mod));
}
x = m.multiply(m).add(this.x.negate()).add(other.x.negate());
y = x.add(this.x.negate()).multiply(m).add(this.y);
return new WeierstrassPoint(this.curve, x.mod(curve.mod), y.negate().mod(curve.mod));
}
public WeierstrassPoint mult(BigInteger n)
{
if (n.compareTo(BigInteger.ZERO) == 0)
{
return new WeierstrassPoint(this.curve);
}
WeierstrassPoint half = this.mult(n.shiftRight(1));
if (n.getLowestSetBit() == 0)
{
return this.add(half).add(half);
} else
{
return half.add(half);
}
}
public WeierstrassPoint inv()
{
return new WeierstrassPoint(this.curve, this.x, this.y.negate());
}
@Override
public boolean equals(Object otherobj)
{
if (!(otherobj instanceof WeierstrassPoint))
{
return false;
}
WeierstrassPoint other = (WeierstrassPoint) otherobj;
if (!other.isIdentity && !this.isIdentity)
return true;
if (this.curve.equals(other.curve) && this.isIdentity == other.isIdentity && this.x.equals(other.x) && this.y.equals(other.y))
return true;
else return false;
}
}

7
crypto/a4.allkeys

@ -0,0 +1,7 @@
p = 73482936276013145955565144225861612903052378488799025581459884388790895646531
A = 106232669604492000952101983011424051981376980857635143588066911520770063114189
B = 76587977420977035044598204053610304596633008638205335306823124689977025819271
G = [10653634968474602131259680612117761410240294893518819057928307519545438935105,53590057826264431726814016302376375223987987950117371742659725930948430562791]
P = [28532308240163403308957388634927833383486854937647900059668124240434058298343,69104332354999776650513976089584444069941586735957501584816228392545085961665]
N = 3

159
crypto/a4.cipher

@ -0,0 +1,159 @@
42645187265308527918920473983455237378254707677390089043096976103264217692940 8674019627872702743922436084344561414326755084915563408311205655967095000950 29870512597991942734629503702119276299111863486899877605113292762539196040909 50301495295901953027036546321344657556845292051503267583685515314248855956756
41524895411331808879721401069152319005738529159400991321371681690258217650174 41184102034685267528958672351066656606684986942188691952943604030156877164622 35092620564894361014327785246329268938581104125783284911027342087558592887802 69273739155585690233642472163444415122967755364711581450554308247577978295872
15984964282972447168897880773340422271920757482763818111756414706801587527047 22333333688471081912556293236020400748407275153303470956609330979946892170616 53558424904157780373432437164371468514309305741598879092142659671862435329172 23549303148713190075629727405172604193642154619698097195197288476444976686012
66981000507782676977450976671195276997668006846219721843731677470145705036697 38793826283420209849232716905729573544051698336328120922059973478022003702949 2531008121573658696921908629294103386020801285119865962168033346354631288882 30326788070358289693973815865260053993797631583450627018149082501370699322640
4946083520244707391265607181312332337220098833530799673060308058616758906740 6723497160552331643353227946562349152909740111649500728395075317106943679461 31546414152673362288099507487527938216894734033971392136279886325776501783081 63449563229093615202051544465102620560403882521545834013223687689357397668386
30296240941112172116149945049354361172257301767330436928432846598206827998488 39764876155170767372270619895516027829217941018141295730269483186467517279648 16671473768236396502148657004230533466488646207373232515515150619785135331964 5968824932505897851100510869094551548495675526676528970016854444011527497044
62902197276996517474254591188741698247354599402804364668375230055902126318905 36622198474449843848822980972188021401346039093125292738947568759006264207271 59862909517928311718362465271531591293323995851282557203231148029607463480121 9109624168911262876873223284000442854621437659137758988751965039035709403858
2633787608695676082332373913610048129854339257711460018367376735255497858905 386870616965835558762341012540438812445025847274186787383975010335710249427 66025378425357752793015530742699402965875634557872900933346496315391452509088 59858074301675378438882577095046721802727035811012427969165646074825806440407
38092287193188833712778657666545698659845893558389834408970886373817047106890 5444630568150789693563537768401586584548123770931284107522044798962530247287 65672575379275711571031037658520495736737948192314997738262648533672133925781 9070381358847302155589412682283830093664741272031129658525728680616426072712
35325350317707331482942513885677135197538176573194112192928616892223353782015 33136198080093190970462390581843738541174460855806613302700142203296620687006 18540889303631338695316547847847883925999581835575566227334894801671344450714 28183152277107602352064250088830359773889481448522455636186393241932453606631
55038787374965040359114686046907847691488614496454007212048453533372701476785 65207018959202338552531196421098009177959524230909340111156746506598442926481 22286080892177719154073711966025126900740748916326705944490585971522470751717 58857146579152520117949984447513950195335364188796006283132840591619038671492
16425067444845215756309022874710552495586439044427663044111259257555164385698 8794362760753363889789478046054412254709948707321409346943286848146011668465 17137119764985563364140540528173191757218377944428141286583142672573654383729 34097387621437587062852485815009570119453950515937685176232270911173701096832
68794828486915847835402656164001463895784862123265458379821858408866388701074 4509342543029968808541106378413956702909828582366981938985666830017040025165 41805171453062374228466001061184508891885753114208822130008320366296242520145 29932510195743866631236506061870491637735057396889251256885962017007734558927
3012644067741487975289339570326297756101787518539575965056251102990225203648 53283842322437110835501277818153287614848577897253371028139771334709664398724 42894680077716740187108428740957622019079063995269952359357261978058714479876 66631159054387259575189513171650294288380040457649242235223816878533768191474
35117214061424944221949654522755224808510098411629911159480163287985894652106 20073063774690411653497612771337291432099965038854336119656254171096282454189 39300310263942383129931180611094036088343242585404448110860512901498553377924 46100729732558174945346295047458301137734315357901502407922373424150472834654
52371056988350182334113926224664108671689870309582178732271952138653575384773 68976908267896419370858049106625940288540534974196876383301540013654432146301 5862899367370702591430705759181202652104068761781700043480727779827726883806 9289065408282681533685668851167218439041613109591311457273421866941717291518
790170424442424276806427708809264029751073382788417829947028025467583654371 5641669393729769417858975783858227717229027829485392880086590317329070771213 40685738827850287466775660514189601735889461076707045965079398019768635698161 49429013504081338522252522888326805253654683230588831253032922921917759969733
67934929041397328849616009821760348604047053556868764708948350328958636071638 21378628779864086930747498754202502814090012530619370149082943278763720643289 53852532642879980989237013774480414637440392510830694166118056457879585614560 29732951797624267765243643856819782789157835996495189013337141254708372993504
34421363079547098406418519095813826255530520732874943330787320521547154907982 33585118681612340915380530243216794309987617531245713461375139481455511430913 42055018272764034825944028192226707009958510011777571736213056386497171266184 34985253211007983242493290676755716216342347868234841319353520477420607866728
21542054793888722735056885086878467714187144734443206647143130026830358576674 58448269342087962498140846566493803488794108090627661215634673005377359417120 38873657621636393252410262970417760537012002986354753002995811983949743855073 59792089017048586308276989015697862285533676389925965624859561669674894276377
30934532578540113246373778895461413681475367306023842871752909375321073635591 44893780516487889823097283611473260047643402031865743660465997897377556027967 45710765645224859443630627557946770665000691038790570776368067928620138378023 55868211185676104070024610312054336088445390889477689220373652430805215093519
58075584428803325253565218018110036882895446254850949966062160129126291725368 42013295004238678313283065637203736784494833467147517732907440836238278557002 43666745778074186288336328871848417708881112100789881361617125881307069968023 26109513866473187599239236529850627652818777333204500540360562159172501347234
43214868821268235129620276846123158155382024329005684917377429854647739013629 335227899442011368628249876069053192556526056480206099788184650714332379516 55770425557687444957906179049593326697902232356543377641340209199917660919584 25264186316164441496467578894541948222820797189103954345039300268557018643604
57127430877778440323929053848667762273221315782998269668710477558075803376401 4997469626631589632244564007387242638644399732322330315559609435275082001732 29466205657079777820827109825343232491387760213002420555383686533101505413351 24124871961278133337525549707833815191395048962024121070588219385287598621080
7125235219463599282300893795220467409423095633265605210298476587185752173573 34029850484271697201219447630991671967248777389482412199491362532797978248806 31413943372334936017390253566558185165652602111517134577969802010530377663512 13135341677301819121205357425558048715854232300742068493831370345247585829082
29285230124040051692776775407830143529427617275716064765015066217039218360277 7551504586775515121283384671384616646700449136032257468732058670839211057412 27098641339747313544238948327345417462528374630721347164737436824863240970328 64900631004456874307804953916580309690728864096653661799894555971106497431050
51926892042552267215745016231497177114008878400821089456777718028880931030355 56266460389480347512922624884021404024169035218201843004857775691386984379052 26369522355651684823281949629500318029243305798232545684320221441187012474608 30042651665760468293799925424424611217351038659641108470729445747382336833785
70294356410462420270126460606586508981206231078739972682977229517722866476309 68134881889274546507134885527058525783804531938499947650156215192677054119975 19858500863646280618487941656173968105036419411913240575222791783897938731220 8474114665576974632673680918614591080002278083219033764636303383249147351847
25822763696032854709644500911692613366926114025219407963946325251526326838492 9729869746827249470076634271312275519189322117706380339831315801957875635330 562504475193748943843259129951101197195016643888487942102888866511839062135 47036647085191349347463382523860674842293107056747139774537811236302400195117
14847702101225924018671986762140157753755545103118253980427218031528850912712 67374631237751630850606157629194884622182514276219716616916183906849375429635 29389390182551124712000262062012052676099608304863865165922911183663372983897 23711849171177017933281033082426535603967376057234855497181103949959990193106
49559909729500678291060163734032474091865289404599258987358737255636563844345 5093157336252487845810532320715659302130059830666297334883569978514891615573 20000105275352438747055932365777802876512220814672081793174124658900603077573 69016899342193057333669692976279098434844042902984837369400739027994349092056
24962816385802035335052444750186010895606157328689427800008781874867906598354 8257640957653104691519412643074211974376245040476865132743362311042320736781 41769951716495928169270462170337737525894798526780934461260476766061325216980 21053652458486461714145698836029867393379177659193543420568543131449974459441
19325779102639631356001491862306223102370242904603956905270634648529824903285 33124696304351417280289683737764737925899144330750734479652363364228970876918 45130699088665633341284228567484988887735261062153908021709373315519572194591 42804347248920421252184179223518635475293180525337185192253160600759310486264
12276579890442244865698273036763815741783215256570224857688595633780409600546 30580036566995801201012148842430402490287083351010081573059975632871606411483 57672795275274216301666390166972092802829872704442479250875925924406253488294 45089208779732923762801196392968943233393601684047735858669250058865006587891
22491777689003410990634271448757576741722894358913982458869065364977344479678 2659051433587165945665659318287098109112864577373221783651295651685694105427 30413892353890564535441989398057962339708458488362058151710671694382985889509 25462330098139525799583622234954709801051531019774711856423878820431381618460
29456893849820028243044055514158333787558372872426864865535526120391774899685 40056388895824011030882766570340559219446205272685767827521597053975468896235 46555130845438304947532239273110771436963819369279102497930458478812712644912 5799272902742206109051275920425988732416525616153072629986856475687219704544
44970862254953474716813954699433958351391376824065712737931808445203819281414 16601652796377268463098242704669506134614078096437179253580933396463118043290 20044149162797790244658170210406292706427799304615757456573732395311606823958 52284628252049295171516151629651884260397256551820374213273781394038456653493
33404069759280158858591587909978492208168678488930819728637454526431532758581 23939218863157542770072109175006351911955139860180445151188877974147150579896 25165967769307332014033214292598854365546732831269045241984278620621281677340 56614739850379710787173266331486599219250265715815286380690623724561278025832
59284844759719655946926514004233421344134340402153158459620141959608981237459 64259098565231645481729486524322135740630026718949744990750867357631820601442 61162665596640369849168884965530821152965941170478672098976564675157450213792 46487142229885015126792176000498864972447716457004465883545498506508921431842
18273405463901173025495124833893430202344828883500125895105835400262237513968 71374344140632393433755884029867618949569793027172458332920519897273931794842 51430788697698528098647794856807693894142467630458152961056743528397533272699 13467512294560513365761470757694664484184168408409198629242159922673229335656
4948696070712872222697362747206697146680861438107279691519863085432759861926 66105628190463542563680305752405995349023588411187496582205755629464688122109 73334121488284520502206874649860528769493161482046196184013819505367232909953 638362770305569283801160460241663068993229106244066671576498937446294339010
7602848831309845611838604643681418352627462234998146654625691060241935585104 14959020510624965782222379936232247841145870484064937920002398191704875048367 37228854184668880006120367522676062721494935438332431644407351653484413605164 9036858926412065576595075534779831188660209521354959610690935850807746936391
57645764412221347938608811871858427268931575797744313451929249739724018066293 40922032844541241533232316272538184755111308925119649389333349913767904211172 40099183901152854268433866506628061753126615856866138545856694999349848013673 15557214946042073295910541028784697840592423111639108953864757403669115069708
30564743910411117057511278668950098219903004855201771245760643712676046671266 6794476707319531033561854870993474187272014671629656713082342839036323127396 66606933457124450611314064582132870700986247826619662338621605600324768468066 36464973492816211197434055227850818532788237001771194720201138562061190427198
73295380667860622135402846254697402197314966681024104686024128261869410935515 48517959579811555687913491054679311237299048534223638022356886006577169817210 27259285441890598809832529492378734922046126897667660886296802922285362149590 50340618066610128888905550753240835537914860826638295200884892140939542703382
38711639020561028085745947216647517947941763005000140418672819428469224174044 41907226985775120607595997854582772061753362918231511274696396371293479054000 59749129640364503828071466330637272764418062327244244065087973586207279886898 19385309755397900235476952495602793128003846035580585837632705386819380842754
24522732451776852677001255346736144981649585089391884671711681015071417347483 4481012084443435295749258404826585244898364037254325896588215795229883064796 58786193585178866834031265108581978182655585268418927614564191982893491134541 19882294976425218852495705845328338713437541479843636783183825372337097856615
28849745364690845067311620405602342274747639060506737544387217170539585605063 18355490801247183917112614796026365240460521819394852387121111093588305704115 14088891529380752632367756252880902319322224021719871688585528540644660723473 68204442822067533758192650744563478639848649018315781458142346259143505211109
68650637238116558627133187146655908691803146479549129881569532316115723352018 72673652410706280085106713727400301253322930008499210035191029394317544918111 26679697679293461052311127237540297975530459332755172764644276375227810811370 25529315198330869180845906693007290637060470884168233109120231863877520577220
67575874939579009011407580414778099761534158537192810822885580188743914901090 10812636204975773879619218524009202553034536928119981688750460391306252460664 26059088992560319313392295854712459860499698183338734872780395831927973301295 72146580135683693494242052443332249660603352668990185907021558661380150301231
57328834554428716700974560294466124764232009170882302308812941949556207807636 45679499356169800474735177228368801944469867909459708091000699290153606910167 55322679855430692052021540117473898080567644013717131902073301075658564707429 21336019778724117139292811150699983397328901308868486372124357485595355860201
51634284984536697889468499499281475439465010021956782988852450114510440499196 27519132013890516244207418877351069806520148286902085831422411575164804949957 22528895185609681183151915742958590980532769846154042632774871364774876850876 46198248081530403556404376627869634189123725401920317221785854623308159296459
66810575935171888751063335341785489025290868859545332218795690167033924368444 37641722090885468521774233995197059301776352992029293403265373102504654970043 69667128396097354920287966998920671540763177508848477117904236414136510863983 51101041711493129028375487533256249441125284648625325790628308217504182989991
31066534980027525544080802920280462568471643149102482278201153945037709161176 33596944914972969463769687782689351778255043870719094738719918595773112255244 21857278798201001176749582135717896217690902747815594738132434400071315594475 57547815749268269586432593638936064727638487033720434512826067941629979921443
53416448146546712797351104490928309135676147709480583008771794400429656399583 46563679530365372009327098601731078608120688787150348984223113106383691718962 27366655177142363481698274345155539053997601237321041222858360424407685542478 24783953931190402573963949942709650321406614072555043970012540457803831543172
60868576202867659826537908192113287163079226551886242314264705905959793110948 40925847217892467315241083992081201261698955510138792600153763585533628388962 31695986028812145379386764927905243690172182121504801802892341394552348227617 54353137951182410180063984316122022339964606854418804723300672636266005207705
21971974771752717698884865062967576059660664465008303816016506168679813871533 36238366366760545321372170243387347785851332737191236122405085944408942350480 20932382300863855207302977103703919186826809386983497113888930120457013055772 44591116480286274259226594875454104625733288076523704501076540377108874537784
54946595041627590410549768762587852845755425973010602477466531343585847919164 46769769485951859010947593260829337306583954789098801032017663897311287027672 29392641339367795181939711214852356651669874776647543660947842141817454394749 12494693648810694551318143505632464378984673863157900934523686123806972350038
52644409728575367320412283754204517377057279745898235280669552376701272862692 72040414883623124712660414077974950492669729689776722857995242614339208604062 21176809531344748912622288394342681187999041638359615685089048858733173046516 72598665220423788147167274014540065791922457378846023217205060701809510446040
60756358076328299597255216897024046429530421188955779276662905026574090927006 1236628995054166945892491382397336549300075475205265386553055869122270868172 41702328461548602130832018293824367360665178508337364718273875193673503701107 45144818320962715278108814572170549166724379852306323597696922228313840208081
65357509464678089540715575556103196077655790016080669076362666023896249935917 953655017610469930077433351931623333779701663334268126114681965530774633527 48879444307359141348792850236490185276280946295813455720410993343464060894774 17079240784545616878826949876182459374018377790662694000060922488853366342057
68413744828864215239533614666366395919560251487912997367153690177457594929265 54986029939083261740993930148580127391375317548447856699467914147335571901446 53817543042367756103537686864910069492600324493792251771052492799131702848763 73038059160518289310335186972625170285553568812445758210535323245384170755429
49479973292132931715939389150840631806999446500498751444874189035639639003312 1452116314714622560894278248974832171261902488853486541025415630267799419085 3942507546664569805791296386407322812367321999049792202423426113002186906063 42321608125214918423342043881792080045186766027805827396635315259719872670569
16276756009928547005362097125440213038937616010561275475266879292328834266019 43060936896956433941186493700223593794637396212706632110828648380097136506427 22148517654767262705230252730312836742156648721414068458506382802687497629292 21210427248404788824182886422429496367590683338781275799177558212845685579110
49442972293138196171935341888944184228946032281571322767481360226399590051607 49195413213894046685728285027253292406036837550236086623071172223059789866159 42487738618113597256699821401494326208103021270800989151151068111563009905181 54104126501832230070093424082927300892286991725136855623864930530246146107268
16278954943805138107588560917210336111176505113993813950525959831662016248376 12954970807774071917471579082240715679738665666604777506891793053664975082177 59583875159638978921418648758981409490578033791346665394740600513437617873219 21590416836767458775015952000688138352446893141343432372702908051320801687842
55954509659608328792316111299520547317833064778976493711466995012272729303678 38174885329715861416453558268903474549923883286168158834448647997262068148489 9604170349896719098030318807389319903983760739241146097536493712196905055212 54537953557195759058475208408788070772215671219847929707100245571300600778740
61747410683271200951203856134650215233438981508968617937430211285608973013918 11234861673622849202659513157879176614981540270350748841499297957563747285552 48143754673529313374740729619290412888567970213251128867453476906183186809076 45968174336097932128154379642424495055891067519938927472628802053549370491613
71264083052992863267770956603139269627281731823720941743669012463064432329523 49290143419419451324175143933006720412519145891297027733411454306413823039649 57753218170791290628069375748999258942621633073486483237768513993906124570837 64483126533073830929730702581478564294827829920007804650921144741138196914500
57721132354389065864523479453704810822143339048707941733180527466187511693635 13359053773396389331148617436992973075498020719996260902452240702141082902256 9920132600119555814011923742601345000547676825205261612028348039855017954147 13739935548732810378640535225283287784565429243202154956885059563744099492701
30506247883042451434804046784777602796498392192353914077283688807301111446578 35779678149519887427967739763041690885226827731297329398502435883219438187369 45514216547664731915644246744418855392583392164365934941167402047501287086712 38528770931125158733918494988670919289770314422122306896566941481123302406679
53464379333540058106716111205143837285782828532035871135271044999831948517064 989377074692954066616155948862902100187497024540831159782124848988969071470 13686619036875686675214764576356254100482177330094224625116537271058059530097 54805463094480326234891547073465501205883075654958392415925701070133223892713
16348300900214170508801585353005887227847897720696576165673686285399879478696 6050050979078642353039434210981072805016652792450631460611347028707194262123 30435298231187099390153479749771697535038825573463210752954406434131085239524 72582450523121267237595787154251634293720382437463525459394247257327068568613
57054526790373503084536413133259348235565189010730848264632225943568442553362 998072975397957616544230110701222332753487674645420625623302285656537460172 7020151287489102822409654788437935673691284472559731314908759173827238442992 62985090659677563058139128469459882980333237016223886806455751634880562570103
16324513556392374166029928700767570109100138600907992076207573205116138825241 24750798763696049860207921434168923968827280508609269665836228015675133717795 47646672872217072861688858346959539411492496563777179588714578258375476284427 63080239456156616805168662256901482304072181605499877482921174009453676322328
40817146190755313356906165079043693059622761684262840899709274873512078561638 33124412234744532460944243403010363862003553887468183130751500636410382516735 7359487011163244884330509375044667399126783197056517959030205714560792599667 50355291238491558328409069301271025132336902315448789067758991334344811940633
5190869223782866136057289028366087443062563404993624847355751032211061558336 30981823280674270586843313470040583464965926929979792323873565583274744018882 34989731946621955907041604944695912895871619926330067208187232483246221537434 44764169366297365854761465470866782181144930722090634437765756349348328664145
6200639099965193071689064187368704809093405749014550012996702129830847849023 70930548024480928096156435964393506460843478472426036205815793481567656872761 21175051043648201622121779780678857067340246309096620297809773804126733868053 24047282615910856969777634467052828071604821059985353284257534078632815802394
28167193454642509730595098986141042553242796271295220412029117666101338949216 2567309104212079198534351146305152901553979919124792868210638268569646246537 56286265357277549776646787853803784677311319290240847714649875120152850974828 23043785817042308148549772043185870477265710167356913116743498010653846252285
41460781778410067471669211892173764809226520388013095183438023515689638856808 34512838868252501235240586341556351059509500230826518116390627922038795837736 69348244487955075401131513944893518558024892031631793846623364585800251580317 27756821755180888101043651803188635070515423209994074089148165996375187566683
21730914478751791445766629899640382247055307050723359547766316980867013574749 59964075225669020708508301143655757567402497958996651076731143784455889325282 46699298430667796457409520308657606756558101306953265884016571146062957749250 70821700870617345986480039094040552365691374481145100877947918365180902867299
26292701666979311613163153325419294428986738086798545815203645631205548717324 63389656422121564316522449286218495120342969214401683874698613953517367744604 15491587015986223984535909514203016059511351821325602749369491042470195947179 38834189552460560817172743239392902972192489554937146418666020019864510653230
18281902477183964614476136956235492777696737133949213632081699465530452960638 30999463010921439009488392210827165167935640487542620451047156498633709708330 660506150876591199632748606885382644291447471244839788406334337483592663781 71883420325665587057768912039546568635013097503739739113322930954722538224910
13396137568718715447492373200559188247611873696681301686749025352924001934412 60149475905766290372619144659508491063478358841005902689364173579466859888076 47320970959766331979948039605219388455806530895983388464848772469675175179400 16076247670956953560406809721985194876898398171324593686316818948663189115173
14889878549598046304195308719837579229641947769838336447656103226249925681617 26443596600784725131229650414269715985583896865108440791080806854400604264686 30106936794329622801847434154983350047295545433413878359325317215424319642590 43353036124769351156004208071257431173583417905583613970525359650133854842411
65556566686856610806258765941983607739264422583029873415265247913774703640359 54832901297915713692405927796464581229083646664186991760067274644010817344005 28500025884761478747460843391411634140314613240935334811633690967489324907247 62364977599515600635681174591130516671419413594114307405249858348546514644307
8934072075010436025924785378004672129770900899412683990915995916241768395125 49513192353764755678973040399138660238064892555755566102099370515213557111372 6494329733013351704864502549728690874309610950217006365745586547897225129707 64941385695255476417829303999172854030797794807704624603033766276709312103917
13871998863605383815545095070853177936884919018649920389608366791935339646865 10901042862008488038793562994207620964003598707569993724364390851299626621894 67715077391883201395957392308448338374844288227633928091833182406202760236376 63880944298281697271137937217259257428353737991377388295865179963171684227530
62685918668405744552695028168112771433177182720032820300970112744657827000726 2693561545785628028780480296625250532781234861830437470907300216017604004727 62685764782852130422148782032681315531904231154309125705472219888982691399362 4222342116755791583390311323424248234945371427171821019484389831812525926244
17221239584244806621867205954669023263148914756684703535336910215645110294232 26330016396518658557380592378816688011789882174587332482365054697107167356732 15817612858131379016745354467368128466999267078047782287320361550150407643183 16589285637105951883146367683763031740929896930203170686237078270416987213644
72090964635369692230143567194123903743033206121437253672502211567984498179752 49630138163537180459633124841974548026864730876649412188175537447936928907885 40071438376448686459419068347794063857381190406509775703695884364191970939472 5909477792140213366978881251455494188456444529629376057780989926861953771131
11837338010870287180735965121096140880846348696700154570104675955300769108643 7879307066092809048465288107559143176003061193914483324691599185502977594457 62474339349125005129543172257048914868521655177602708982813589656657277618908 44066685184595936035674125465624327411511160220804737400232753920723657608152
12931092175480782067993775218608946330329649640254971038749807008510779079107 7569318374150313287431966985199279887793297500478764832883474862311122520828 6402211630393307935826489515505570055869769602125715380928972637888011110792 22256642092926314579620759638321179937125695864756588866632619812062216702747
69282993818663517550953336415975388929093233628970915060686059241219672562820 21951974565221130317528807745790880124452966097727141565401005206354265446877 31167316832426560120192017954190266270554184914360608483817120137364536961610 6329414737724193579433299247207316478345033461634417770007785302955894535100
26029349525523113029256822950745436229499191983620721649662130598592726481146 9897775331293666968598193804250680080169430952498077772982348736587874313723 17198855959483821143934100808924070922440205488317347544563055673182243792498 58688064527468811389328652598404594006653696093442243821830545728251533633097
37057920228475516650971891986850442699119033760459520559638677794794277284232 59609628623333005474215429604781431074510879537590567828854872045647471943827 19630685322371805746982902399053529626877736098784684190319331866115818320624 61038511669083171099511562884491273829488163517684055438486237367513314114657
4958355853301295199850766018473563699682163160632934805076239828094706231039 15612284841182241770038371762759294051763583447274927876223718884053847633632 39599007974995266960353727147126758526272324046295066304970422660045445364268 32639528847413428920154603944673018260740736812857953237823626053772586676435
52333751793869214623212786073678021239389784978833620028767045517497682085544 35500856267306622731347368905419274727893444338573133072049315554387558085256 70304119388832985717053635360769697870434826312416568318548056871608835442846 16453923518234179683891029368531021884364468828171702550523287558203643321810
40448949774247641062381597751608157392478172340006648584444617638331950697719 25354008004066021802857563202992794296444894819359445417931945765221206224814 22733727088747573466700341019720086627747568251783382841071259818819096660516 19581059370226624793134782839202997562829888927144979715849756616840897867804
2277361121675849062341359696706502024934465710852101590155350294886223791563 65326978247099235638728705737699038557050985730677737984546701997642816884609 13930893519717324343284102326872997742864901630879917276541673749255667761679 1756229404913344294298592042372701809702905695708680034600615930549462327736
20782289452553780537550499814594893188435441799447151743041915298801610736026 73082030328874443384441561927587969500143704752600521644229848327241120816731 18826936738043784039181987525482800833927310920807488185617646892537422639430 14060874934592270153979047662586250466839481241619238218027620944290951062184
40582332596481614801773058176972353627754668803022852621786488709701030986719 34956129289427117404065289302367900857249951650011036683288056546790488117020 42678610577142870995121877382007604984961752419316584585442399699862665903682 52555447709545632402592341642236810363536306219862995181571354463069111348029
65281910901560073721683630695052136502291587202870653963932736754141259941608 9553797994873338995383102771880951099134979095355064356860641598113989038895 22818333330465781349881868218222015003773113773954067248914173762004091767516 65594762688924987311556050714837858902990502187679227222602713813936224988266
65525564779433673063644666493980654312767305048681490249918097353839845063487 57056596167465449028664470155704141097231228466737165803840296594265955027729 65726794972021650738154513094400787696856556109322824872645468518889219051388 67817286451179385087453289766197124339731787958269325079341361579547109045320
13031106122197928422903042294790724572388271852991464525557130037759911340141 64042568182728997490191902844298123961821091514031262974143993486164005330655 3620069800593527134441114169362810629480887045807849320482132042309683972338 56567062704429094739050739116668723720262873172635868758083570750004209284330
58566026627314559728750232057354758684006201219553978854777239405257336986068 34314109513026859532091020564209273096867755969997283973285211205672102503670 71411307644914978310591816198035804376181931760860847870651561406738502006759 68775605971391013043400806337259759286661730566045800425783339305792244363095
25080283081710831918548009881976845836015725928901883051315202275343216838712 59163237546471532219658404466708599060952666337237952428740618996060077124401 20133298905898911517576808031709502252041081796788428772841330324886636869502 63448480358781375175875535793301192357825202352548900362189662771231272199622
556006201229489404951050404809341875817208816858807912753913770192873520743 65392912415667066832250479103911049360918759978073374891180425461078603610533 23102850489960058647255281806410488121240794227893544805366848054847012261725 68260151143338241005113735550154286426919811154192696465323134795748715909417
70862409933780921059960384712548592751790617069577494948334783065804091226520 17960384788970377587214131741819326495057574103368521234587058963184539223814 43242505628430897129770485472888355756372401881732376128085411349921934949119 64455530062740733018464757989132657201649980053781475670990310812906252504238
43264863320784970221196961161357506839865319200977649151321713756830717194286 52203968696734697382353148522629851810783260725426690341870645500079708709769 50015892414863639992433503704002018705495727895416456607089026675060308602868 20718042707921182915687711286646288553737088843682877832904124804336921397573
49460302103740817842505848039014135439496711753028432458903244605544202951560 57918451184632410641964858517242774900892444431961337742331323857031995163374 48372388502250441739790045552132680069236698790834731340752466075321216298621 32028881770271773740769220405765907917936242678965507099585722997467312169487
73062798928679742677968304896005408128441259570105775210923516973699218985450 48712039892333847148393047959568818734737686770361588556000499491329218875442 59084188060390748044169983921664916808889623104549775881760516441941513544172 9096919400150634003826683889695072199964768267657953088654262280171869139529
14574984956148910179586255209472034581438523676248725559809980989831726377899 37744205885602702466194709355247820732422866684532759541602665369128114073175 16182663126967275208192400293199885236988302515056849351106815878045228187606 12546666286828185071900446888286167735601908999803861982525306884685935190713
66455604994610809944925621090319156667433567278186009936995679790638945268998 68704156289290663218251561951796145362033535144061590485553792746141651262581 70841668493579820444208871822344927475475409178259890474898673231804490475402 8459331713186081733722071396988259823249195557915810508210896016839549361859
6640875487415994613346381246158242957867685296596578416119117010668005036983 60069659092996538673539335158912550172299503305254033607239739048980397379804 9778413740060468834474383890415599342663365749886850440110051883077620380568 29949878197377144042448628311972248883398148719223044723853411401185913665383
21345826667250503092312433861879748858628440713074852130973834752757886186546 17598514442554435274038805848260717766897072454803017062787698577249688239253 30774370302214115455197837168606007626559466041603936923932192436131095164750 46781484982961992138533974101586420828337122238807552832838656299696158504344
66616278360000725656999185690237222973164156800296291226504123410276171023427 60721783583981560808930902974845756343463480018871103679410670930570836114039 21489080413389065616540201964790836896355761112739952822273971068672915760481 14597428486454241021658027103716687449265821634329407312698624832647022627765
68706061060193773163207820963353785449236640437871787333843569974173017171758 52573972925587105805740136100018554709029981251474432859460513380388933217580 62858009803460884398931240609877560797233142610831809978079115936837777109503 43644648077798108308654372312229561248372423298257802504825544811112940405102
20759373875445602606630614111597742930982756847949438791465510643094889320288 43709314671766436675231228952325708528195558665096993520402315186300717227793 71852890811634298632850612866235799797633194404088755402945696842742794332952 66078144996390261274433905112238420590247349440611748963688778385396844830219
51613669088576263663316836772715518694716613381935150706859199520291821216760 43660876227852659851263450547037705972900303821610379118819290353457463683413 37752197254034504272742181180867547501840468394288194360596116699503425677809 22841668085215970238022477829609268274171031701450296042184211078842803453996
30880935360901823728616708050634781512226706410673480602589969527872438375782 44462096478471518769537104106680180587051792321829780513058977202745078575431 57623577452127463879752002900961457571658440675848817925755707031146158367518 50015517131629682633682478414328569179815094553567708757152851340962731657882
64022841069791844101717391447023825503077809439781798745761165817004258291744 15033676036951411238249831575451435849613333265447964463949994605750906562550 43100028019340906121880066428148311824808919606398747877963743048914075884920 19412807603961863855380492491774460123836291155814345826976206952605865473851
54465255524914997585830284711079982829107554785737197808499223307963921558635 53682984903190777703252526707876519116819934340771167782396688820764502594213 36739991648012701839834702217047881448768429584287549985230934970199640059401 60172742105374647263219489241981552364846286982324817727250215985644024865588
6090594070064260602959123022557703523629286556599573562341664203220699034487 58180576502825800410691337178665750865005733267830719034839748755459320995804 71439055393508713556124240576207833908272489996197541791117855043432715138004 54453683481070983370452960556448934211219941858246841382657363305090877080992
4556919271435959299200523893556785644213473246542920673137754650661569835168 47868951872513483807067606840682440328723648965217225709992737124831730234526 27082895244392290158500795996041751913816579911973287334868227443492383946274 39625634544361800096609737109740871206768945966585445280384707041922499707498
70950114484338353120890984971001686402673089807595585625590013230327124457534 2509910782268077976228034219602717694348100073826120726293074186347356577144 23787328061084669775210143393253956993492103029489227780669392693286172101420 43154393482242826387077931052338245954100734913614188145796178125447605958302
64337024431989372701094312611534652272721899517407809844882617939025516699824 51389628645458633729226465552465248681037212513202528889719296545929198467506 42404320716199014743844124477906521493663730166107549431722161724250747230081 10992492827947585549623573895973734410730073416121889061113929075306663650419
25792528135910939339026604289645557363082667654996753300816555911607538034279 52421073589582842570931195648812904286208464798242772338474759044323272925752 67413845006055955679398716205549869242820132017353364434166818970556099470331 5051974197382819355261453612501775884360356732411426042695911050182081813777
13899378391609807543057863266552143789259852494206417034389895080603594949050 16239653653323417961407585824065575809440660352154906022296758489303170105231 35903678145928353671973065271304264715430995409689987369717758853691072236968 69359274732264727436040554555959666141851735506819714614281440089712254005984
12140417800080705273372056915458512410847274200782280823050173308920273723512 5868326194444433783906869147901706763998060479499026172782631083049670177739 31919277782640361176729793507258132621354184023326295766112500195306463851403 18447335866090856687957670020006891786236061348002903957454827714793520597252
64604068798290788222694128608329655935113322463109369848745534212480808442412 45413709351670015068366532980263028383170648947072543825752423785013285326931 64969634516855996300757285349588997869879475908252984878347082486397037461257 57689829499479734602061998428973129167804550994579730774779764464337730101943
37535186569708593463336797433369020838219779733896658667636169901750059314198 20212925997321870881580596922819337463604050040476972987526526646818796229214 22053418586048059709408721292938364452584283469092514850754918973476762275367 33362560715049204143364342863631057753678323240536560035433098799249004373142
8418504829004374197232583143180826833939598654077474939996207231902321301078 7587519355040742120463941818302944832690823057912521111289258616878352805883 56832428135031038482092728914258614894190416147906372350192674616530865389988 13077320451162257628917357532274221209829899788604214915217756037643428176567
54819872606052254912349229960172605320781293479464540164314654715337357291901 9350291507281930560768899919262165624875038605467329142276995251148145223665 45845917597478120512420655214992184208074298292961174225457410263753805722828 21252494796468579385539750153767560549905644656279479373287269612596056146444
62714797956814082633052873794526536198020160651996929450100513448280195934105 5586038256270170515941178721994322396631715121748927926393706301158594612140 15900744140501242466431052750326233300996660798189983790452457231312433195478 5471696175399956455859884963945628964893096805112368048189301527456077346085
64948351847769979160793641053890312201846262588993680842674500727078357407568 43781725270691472096032867038026414473554973771044982280669014372998726414650 8756665295283599332033877633162291641865123167865691932182906988794350400449 43321954369143536929212766249844718110616255053354712378557975485292425820292
34381673201849452430037796197924528804064767589452372133588417254898330119700 56990075114043368353278893899100927853795214745683688310244420453479187012849 62368721191294119427327832728770870095432168904028894137470871977499500446065 1660741247643596946505089374136889321758478353484867499674287141834271171382
20244460906547413340454458045482030677559089784930583344520380723601290806735 17618344282242092919324014783503000803557921407613620044448483120507913925295 58095531054293323728260707252390059455502797556920727446171717648045170731074 72248662967863996235619870034056384451078045779932725793325606926859392449629
40339537945891810359653606061057271581309116241977251886241365466098401299550 47378231655339478442492777814516942546509494241037403741255673682774818638691 27978376566596244950479417776598587147415375707584235710391592101813825153367 64099263347315989424324266787256179185579038843854966957435052242862376476102
14641926481022471256990165944428804071262265987864678405376584674900161632829 15802239995682606800601766220750514516213514998592815448595997655872372019344 71291761417545420751161478846156977663512061223259880217111146221645799370415 19564446557013623911911962957107821779128445020066739807211537853239384797832
8199281708375601549257164590683929318743456691397773298466656174004845905991 52696132516526007776722407804693506964462409631962624534494948731806495943061 9280229975956868805222010224900929586109213842607892435975205466211927347736 14809270845833115490055198517457025981797906038248263346703627076974259867416
54573232936460493122742744837001532896073776239773328419818516463627763782859 21597368985504611227681330211227147450664790969480840661136657886984656130056 6045385436917230519083071479440684079666086003395500065564024551644180631666 69724225026277348784399861187672338384431434240513132688568388566995883048946
41305962201719542821245396080197121612138599560675521258930563865120410688910 266003987522561200558245221319871072115115211261389691603993862137492830297 44430625564041007412442923451252823072075388927278518861246979364765915421108 32081348004216452205694692827375994279684842597435974846265177900345463458723
66612262149082472409172426157615552417128797566126967383836936405354156472377 47010291366082817575390496600904267153266277695850529959676526739637592439239 60830438258839889450631525100472310457821400088366746418343027207034229715684 70352138631810377431190897619174020024485479300522532536660704833635746904354
23261992205863708618517470782761134369005467271788991079078366378930829697814 5951091074396093145463739056097225905217825824467432307724682076008929491772 5597509247241671779923861782633178287478008069757136221776843568896943358349 11799444920862540552049652425441187862682791489545287703646070824856216283256
63692969499725506743637421157584675392551158062186391694389363407202481918612 20086297007748962621523660709119523092806903219801861022308182806424261542214 62820429489552158082214516977932075762000526351445268484952745034532363237499 4091756258520839601439597858456311199505162315944059773253403010155339387978
67389011497574595846212161617635811287541056431869373945778276518160547550064 44768880763050164617490082519766108863571289609429512439733017203498363774447 34499577023866134435835963995878287471602398092330835983036696932434078186256 55114670494094142834074554886252487928096489465862743135610496277828489151365
32279021457052577752752563659167548974484849549000642470480055173434401140020 60656798865783310048769849494545756592899604996873270042026779935733342888781 7888628489809548938596753762017299227311673514645744919475891424647814005516 29889167541270226465490580124762132657004322031976078270091923653360193967134
70624511231750753767592861018169240504664429079588608389666008643338117963892 34975455695912410543509224768126582095749685016505824659448210290689616583133 72468788955632394205095999089750811137304460219088290264662323349281967612114 21458476559866125441280764649889427013121782036348223181654471739185873857086
3183185535977778968248114896010270839193142739945745642289816562381589611523 48104362808091073710251116918532119468873805737673869609200310345925042357076 10053060782386476696748243865469006526050187300041384439845865775439347563327 70319269282592495423458962489069390172868865474841071364462313604736038957588
62112192363923198984406569448101688569220791441170040404108533944444614102933 41327229746028420209553368370256226459012471115155299671754215259574402208713 62191672980521618272420235490963932342230996603035647863038024121403703781155 61676587963617746670104508271251990287640513573720703857155882319962854748026
2780143818144430100779736953503620519134476334542127012512110075980541717384 43930971862861322623012718022238712114584186059437639662601433675205485620808 25028601320015707509948565873450966664227560813602752830467278033862798570849 54629977529084341077773890332844035090775519089014577736460970506027021465889
15076959378924193502783598629082164627218585278573548238100289831460793856515 32474496971173466733470285561314212817130697540632079495305276482190383258161 13989562078219865946102985770785914034599216561335125945018672489688301868450 37986267634229936811280908413011881107937375844791981816761044396767016840510
63463287535572174163966842272583928747651292852151530821120156848717366588342 22027841119967958297210348959408598433164614365442705841641794577071566328019 62794191477409615607549055546276595745604064477692399321394742482781024320687 69299572413035499826036422999146401435672129961268839338913488667182270217317
15560535540124683177211688167854010109669391330318544117568603964445375984729 12374895993717434028528384549738359763098793582917078853995559188870189885333 21901928586284156784018356099287754657977954585200141893345810935724926121136 35742862743177790187730712895236598978291472142889095698570603985022497718737
28984892036043569269272283585009823451362757570737949069338891628362511178198 51652448921875434893304477413737770472287166368373812244976750063027287487190 24144208324827431607774525290043648786142116064342569843329137563761102462323 13982967942168356005951409780162975831082986829176180362047601407672181444138
62499448606830372397558562215134324609555793135392661258933441804950765021568 19458407956852566155812165661952979266884703123263604199532232926924302009453 54175626001654310354424508593743905788131923171733391923746216755936581775320 14373644193063156394795484426557210549228344555952620281261861429522826633034
41971989126848282290087694879013193838872739028134538139080765489784154676930 43855630626373312018308392363133573243533020363408472710335979340474978147120 45789564868394234345256436670942213100282439139444676638957594905359060906821 44894302410371427694390186499289245584702210753139546462157191451580112245698
10231063669599101822700578261878305594529588169789526936179626124524003329231 29121644268385279961586910889814383102507153365606186078358583124746316967251 29929795915919868527421033635460276681902563170511317511423952569907976829235 47942363661872389269864782381306330333830741475476720426160280273704215830613

1
crypto/result.txt

@ -0,0 +1 @@
a = 7043898314006318326115940780032836020708457705643306740966786874458975733455837047675402416635877437320813967832253932800054266068442549850174403900383164

65
sample/Main.java

@ -1,23 +1,56 @@
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import crypto.*;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
import java.io.BufferedReader;
import java.io.FileReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
try
{
WeierstrassCurve curve = new WeierstrassCurve(
new BigInteger("106232669604492000952101983011424051981376980857635143588066911520770063114189"),
new BigInteger("76587977420977035044598204053610304596633008638205335306823124689977025819271"),
new BigInteger("73482936276013145955565144225861612903052378488799025581459884388790895646531")
);
WeierstrassPoint g = new WeierstrassPoint(curve,
new BigInteger("10653634968474602131259680612117761410240294893518819057928307519545438935105"),
new BigInteger("53590057826264431726814016302376375223987987950117371742659725930948430562791")
);
WeierstrassPoint p = new WeierstrassPoint(curve,
new BigInteger("28532308240163403308957388634927833383486854937647900059668124240434058298343"),
new BigInteger("69104332354999776650513976089584444069941586735957501584816228392545085961665")
);
public static void main(String[] args) {
launch(args);
if (p.equals(g.mult(new BigInteger("3"))))
System.out.println("equality detected");
BufferedReader br = new BufferedReader(new FileReader("/mnt/home/thajohns/cs242/cs242-project/src/crypto/a4.cipher"));
String line = br.readLine();
ArrayList<Byte> bytes = new ArrayList();
while (line != null)
{
Scanner s = new Scanner(line);
WeierstrassPoint c = new WeierstrassPoint(curve, new BigInteger(s.next()), new BigInteger(s.next()));
WeierstrassPoint h = new WeierstrassPoint(curve, new BigInteger(s.next()), new BigInteger(s.next()));
WeierstrassPoint f = h.mult(new BigInteger(new byte[]{3}));
WeierstrassPoint m = c.add(f.inv());
System.out.println(m.x.toString() + " " + m.y.toString());
bytes.add((byte) m.x.intValue());
line = br.readLine();
}
for (byte b : bytes)
{
System.out.print((char) b);
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
Loading…
Cancel
Save