2019年7月14日日曜日

190714

Ruby


公開鍵作成(ビットコイン)(2)

Ruby でも求めてみた。 

require 'ecdsa'

def show_key(key)
  p key
  p [key.x, key.y]
end

group = ECDSA::Group::Secp256k1
G = group.generator
N = group.order
p "N = #{N}"

# N*G
p G.multiply_by_scalar(N)

show_key(G.multiply_by_scalar(2017101920171019))

(1..50).each{|i|
  p i
  show_key(G.multiply_by_scalar(i))
}

出力結果
"N = 115792089237316195423570985008687907852837564279074904382605163141518161494337"
#<ECDSA::Point: secp256k1, infinity>
#<ECDSA::Point: secp256k1, 0x50db8e79db5f57e6f71d73c7a3cc93f590ba1e8dc9b43911e27379fefbac6a22, 0x607c05d00f857f2640b18898ebcb79c6c9ddf683ecf0bcc12e48fd8c082bdf83>
[36572950727085182085382801403406684418997739286809164939833038507156062366242, 43641162618061335383666517243600726585787626462467298998793806674351551668099]
1
#<ECDSA::Point: secp256k1, 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798, 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8>
[55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424]
2
#<ECDSA::Point: secp256k1, 0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5, 0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a>
[89565891926547004231252920425935692360644145829622209833684329913297188986597, 12158399299693830322967808612713398636155367887041628176798871954788371653930]
3
#<ECDSA::Point: secp256k1, 0xf9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9, 0x388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672>
[112711660439710606056748659173929673102114977341539408544630613555209775888121, 25583027980570883691656905877401976406448868254816295069919888960541586679410]
4
#<ECDSA::Point: secp256k1, 0xe493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13, 0x51ed993ea0d455b75642e2098ea51448d967ae33bfbdfe40cfe97bdc47739922>
[103388573995635080359749164254216598308788835304023601477803095234286494993683, 37057141145242123013015316630864329550140216928701153669873286428255828810018]
5
#<ECDSA::Point: secp256k1, 0x2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4, 0xd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6>
[21505829891763648114329055987619236494102133314575206970830385799158076338148, 98003708678762621233683240503080860129026887322874138805529884920309963580118]
6
#<ECDSA::Point: secp256k1, 0xfff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556, 0xae12777aacfbb620f3be96017f45c560de80f0f6518fe4a03c870c36b075f297>
[115780575977492633039504758427830329241728645270042306223540962614150928364886, 78735063515800386211891312544505775871260717697865196436804966483607426560663]
7
#<ECDSA::Point: secp256k1, 0x5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc, 0x6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da>
[41948375291644419605210209193538855353224492619856392092318293986323063962044, 48361766907851246668144012348516735800090617714386977531302791340517493990618]
8
#<ECDSA::Point: secp256k1, 0x2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01, 0x5c4da8a741539949293d082a132d13b4c2e213d6ba5b7617b5da2cb76cbde904>
[21262057306151627953595685090280431278183829487175876377991189246716355947009, 41749993296225487051377864631615517161996906063147759678534462689479575333124]
9
#<ECDSA::Point: secp256k1, 0xacd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe, 0xcc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37>
[78173298682877769088723994436027545680738210601369041078747105985693655485630, 92362876758821804597230797234617159328445543067760556585160674174871431781431]
10
#<ECDSA::Point: secp256k1, 0xa0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7, 0x893aba425419bc27a3b6c7e693a24c696f794c2ed877a1593cbee53b037368d7>
[72488970228380509287422715226575535698893157273063074627791787432852706183111, 62070622898698443831883535403436258712770888294397026493185421712108624767191]
11
#<ECDSA::Point: secp256k1, 0x774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb, 0xd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b>
[53957576663012291606402345341061437133522758407718089353314528343643821967563, 98386217607324929854432842186271083758341411730506808463586570492533445740059]
12
#<ECDSA::Point: secp256k1, 0xd01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a, 0xa9f34ffdc815e0d7a8b64537e17bd81579238c5dd9a86d526b051b13f4062327>
[94111259592240215275188773285036844871058226277992966241101117022315524122714, 76870767327212528811304566602812752860184934880685532702451763239157141742375]
13
#<ECDSA::Point: secp256k1, 0xf28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8, 0xab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81>
[109699032664856045668214896063362497021339186688470416858630178803463338613416, 4835088675770141268294878046681321747490758260515711581034896622314066275713]
14
#<ECDSA::Point: secp256k1, 0x499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4, 0xcac2f6c4b54e855190f044e4a7b3d464464279c27a3f95bcc65f40d403a13f5b>
[33301309993451753050311554695703528430361259803437469669590207169100761277412, 91711666877231500617203373035680263572492971120307578300405368749466283229019]
15
#<ECDSA::Point: secp256k1, 0xd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e, 0x581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58>
[97505755694356382817881959832717013755620551362654128955029190924747025549326, 39856815248295663243990443767776362321337592747889787217974905533720651000664]
16
#<ECDSA::Point: secp256k1, 0xe60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a, 0xf7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821>
[104059883622109321374094289636044428849728529177856482232626205340719788190730, 112122903140080327253741791678230372394936108416576609264408917599318947489825]
17
#<ECDSA::Point: secp256k1, 0xdefdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34, 0x4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77>
[100862081773581120499222301212791081193994281440454033593790618293887747050036, 29883864782608871580821802176208615141762369223249393426421538275393411672951]
18
#<ECDSA::Point: secp256k1, 0x5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc, 0xc136c1dc0cbeb930e9e298043589351d81d8e0bc736ae2a1f5192e5e8b061d58>
[38901272619685732968285380035171577070479117282397203902622597987558769928140, 87393127487643849618870152207476122589010570440825041333620493866032028851544]
19
#<ECDSA::Point: secp256k1, 0x2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c, 0x85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a>
[19588375357829479297593261744848590434972900972071148260168833594658324503404, 60568592333449737531184420002591396163903580402725242236305558432410218044282]
20
#<ECDSA::Point: secp256k1, 0x4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97, 0x12ba26dcb10ec1625da61fa10a844c676162948271d96967450288ee9233dc3a>
[34773495056115281091786765947597603724784643419904767525769502836017890139287, 8470533044743364938367028725608288731153024648869546164814808839694950063162]
21
#<ECDSA::Point: secp256k1, 0x352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5, 0x321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c>
[24049875635381557237058143631624836741422505207761609709712554171343558302165, 22669890352939653242079781319904043788036611953081321775127194249638113810828]
22
#<ECDSA::Point: secp256k1, 0x421f5fc9a21065445c96fdb91c0c1e2f2431741c72713b4b99ddcb316f31e9fc, 0x2b90f16d11dabdb616f6db7e225d1e14743034b37b223115db20717ad1cd6781>
[29908081367423272746086114569421970207888665320998202915346633185016778189308, 19705544727792599099830884487151299095417296550955739824847212341657057716097]
23
#<ECDSA::Point: secp256k1, 0x2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f, 0x2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67>
[21545045623056848826483343441081830815719530893582365358444562918095175994431, 1296978981679745807043951140304019026881137717020402959957988455650813508967]
24
#<ECDSA::Point: secp256k1, 0xfe72c435413d33d48ac09c9161ba8b09683215439d62b7940502bda8b202e6ce, 0x6851de067ff24a68d3ab47e09d72998101dc88e36b4a9d22978ed2fbcf58c5bf>
[115090238283566018960826468250608273126387416636633736439689841211757211870926, 47185183227829754668635270747409548752084785367264057948864458978444304762303]
25
#<ECDSA::Point: secp256k1, 0x9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714, 0x73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402>
[66165162229742397718677620062386824252848999675912518712054484685772795754260, 52018513869565587577673992057861898728543589604141463438466108080111932355586]
26
#<ECDSA::Point: secp256k1, 0x6687cdb5b650d558f40cbdefc8e40997c03fe1b2abb840885e5cad81710c4c8a, 0x3fd502b3111178b11a1fa873825c72000ef8e529f033f272b32e83b25c83ad64>
[46375854666189782329411331467438732923135312366454677774518044107217916677258, 28872066516664221627799718496556756366588329842312456769228220433104069963108]
27
#<ECDSA::Point: secp256k1, 0xdaed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729, 0xa69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55>
[99023490166718961467148584643029653267652245207820783364668071358307234645801, 75362751621984629832705305750958516370071248757681753180287377123479199292501]
28
#<ECDSA::Point: secp256k1, 0x55eb67d7b7238a70a7fa6f64d5dc3c826b31536da6eb344dc39a66f904f97968, 0x7d916a47b2b581400b1e718bf404258540973bce1c95052dd0689f2f493be3c8>
[38862517885349586199469132990077977525522399615397327331631717567532241615208, 56796032415390392137148811074183321813766115156763923072036584114852967736264]
29
#<ECDSA::Point: secp256k1, 0xc44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db, 0x2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482>
[88789495143442116025801984763830218317601484092281216301053684219001740388315, 14971629676138079947354454610178388572791590863859394042797260533911845233794]
30
#<ECDSA::Point: secp256k1, 0x6d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00, 0xacb82eb93309ad1cc739ddfa33604a83776238aa0bd5ff248dbac47a17f388fb>
[49378132684229722274313556995573891527709373183446262831552359577455015004672, 78123232289538034746933569305416412888858560602643272431489024958214987548923]
31
#<ECDSA::Point: secp256k1, 0x6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4, 0xe022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82>
[48009403158434809478298710137233764200988036438868259456275038304221065242292, 101379581344212856035375194820281365028426536613141130008386086305632315345538]
32
#<ECDSA::Point: secp256k1, 0xd30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65, 0x95038d9d0ae3d5c3b3d6dec9e98380651f760cc364ed819605b3ff1f24106ab9>
[95440839670107969455973995843666399663662641812074432045896568980475242364517, 67400892360194400039319989411395972789004161889863182881857158544061243615929]
33
#<ECDSA::Point: secp256k1, 0x1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5, 0xb9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396>
[10219441022991940610048493520113102240595005085840974180672104038719657072293, 84023467742492607926612431243360899514584580916128500081114886405247779677078]
34
#<ECDSA::Point: secp256k1, 0x1be68a5a028f2601d0e80d468c344ba331d611b96c358b6032e8b4da0547fc11, 0xbebc47511ade7308b3ca6265f9400779c076329c75146bc6ff1822f5d1f30e79>
[12619776604307790469550660645393525758448419897555601226868753617320214526993, 86272100689574882152938150858861318820088413186167100601966648021512258522745]
35
#<ECDSA::Point: secp256k1, 0x605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479, 0x2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49>
[43584328072464330665967763306297595761508151294385275883849271528835646125177, 1171731419844835688478928898148416329180259014376715189840427072871218252873]
36
#<ECDSA::Point: secp256k1, 0xe0392cfa338aaf2f0b56c563e3e5e67a5d5fefe3388f85d90c899da20f0198f9, 0x76d458642a2c93adee7a347a5e4681f9bb5b10f4bd8aa51edfd6e3f50e7da3ac>
[101419098787597942766661010883841213675986572091206578880178916574081925093625, 53748097764673089702489673031527129553025318704228137363806494938199580582828]
37
#<ECDSA::Point: secp256k1, 0x62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d, 0x80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf>
[44696466249196887777481833878429299174322536392992392205634510941844339159869, 58341336599715296255997469230977942456412351469447624645098110293822755987119]
38
#<ECDSA::Point: secp256k1, 0xb699a30e6e184cdfa88ac16c7d80bffd38e2e1fc705821ea69cd5fdf1691fff7, 0xd505700c51d860ce5a096ee637ebed3bd9d7268126c76a16b745bc318a51ab04>
[82592391416753704330480457266605199466589998476548643675167586509583694299127, 96352244311289141626709213538144106127822954871227876742730890119647945927428]
39
#<ECDSA::Point: secp256k1, 0x80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f, 0x1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a>
[58245954963044076335222193032419637688317373475605757277584156718458924469103, 12764036181290433088658499435961200322530176588733628912045896254235383420282]
40
#<ECDSA::Point: secp256k1, 0x91de2f6bb67b11139f0e21203041bf080eacf59a33d99cd9f1929141bb0b4d0b, 0xeb9ef6c031eed31de34e7a1009f8725155b03158202a9d3e9a9a2e83124a7899>
[65977930378964483966842705159007630837451149704819265634327747226133817150731, 106574384264472205627876631445935175739834375489227447805380155393950263965849]
41
#<ECDSA::Point: secp256k1, 0x7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb, 0xd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7>
[55442706224332212356956949983947160877073898960448236395042968736464621521147, 5905242281663190858892708265754696019921609450612128937011632221309721495543]
42
#<ECDSA::Point: secp256k1, 0xfe8d1eb1bcb3432b1db5833ff5f2226d9cb5e65cee430558c18ed3a3c86ce1af, 0x7b158f244cd0de2134ac7c1d371cffbfae4db40801a2572e531c573cda9b5b4>
[115136800820456833737994126771386015026287095034625623644186278108926690779567, 3479535755779840016334846590594739014278212596066547564422106861430200972724]
43
#<ECDSA::Point: secp256k1, 0xd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9, 0xeecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933>
[96414945312501980282409358461754977502747357521062737878469375231739675541449, 108016644921439980219149763541432916357155273945921323318636524851968650287411]
44
#<ECDSA::Point: secp256k1, 0x5d045857332d5b9e541514731622af8d60c180165d971a61e06b70a9b3834765, 0xdb2ba972802d45fd2decbab8d098a8c2a1d1f34761c6cf261879a7cabf06fb68>
[42072772011086351294328511389423850314698152445154323541536957340534349973349, 99133657745585934968186133288050721248258413615930917407282740640761199917928]
45
#<ECDSA::Point: secp256k1, 0x49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963, 0x758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a>
[2069755349039566255304036353648839232649715781170511813011535420394543798627, 53173698995439924366951845531266805314230463309822098990695656330917108292762]
46
#<ECDSA::Point: secp256k1, 0xf8b0b03d44112259f903b3d100e3950d980fdde9c7e85701c16baedc90235717, 0xbd8e9dc301d9adc96be1883b362f123bd0a986928ac79972517ab5c246242203>
[112485767891133126222498548010271946438760990210983300801299715976951536768791, 85739109496996784368776054024999276184984966609644199395125789597014054674947]
47
#<ECDSA::Point: secp256k1, 0x77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74, 0x958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6>
[54253141229701892740678441538472478126466317116121420289154985997987923385716, 67647191893224491627918802490479062705030965032432110320079555712709270724822]
48
#<ECDSA::Point: secp256k1, 0x6eca335d9645307db441656ef4e65b4bfc579b27452bebc19bd870aa1118e5c3, 0xd50123b57a7a0710592f579074b875a03a496a3a3bf8ec34498a2f7805a08668>
[50111670963408569345385204828013406423962206186815367070190059614189255189955, 96344650049071302355595011727277439354119658646232861677212062449792674989672]
49
#<ECDSA::Point: secp256k1, 0xf2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530, 0xe0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37>
[109846273198995465046214558810696509369395695668678477567979041624391316796720, 101711840700253487202274292900077312932162220876743713596510869779955653950519]
50
#<ECDSA::Point: secp256k1, 0x29757774cc6f3be1d5f1774aefa8f02e50bc64404230e7a67e8fde79bd559a9a, 0xc39d07337ddc9268a0eba45a7a41876d151b423eac4033b550bd28c17c470134>
[18752372355191540835222161239240920883340654532661984440989362140194381601434, 88478450163343634110113046083156231725329016889379853417393465962619872936244]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。