Witam,
Chciałbym zrozumieć coś na temat kwestii metody podanej w temacie na działaniach z elliptic curve.
Zacznę od kodu, a na końcu zadam konkretne pytanie o to co mnie boli:
p = 11470374874925275658116663507232161402086650258453896274534991676898999262641581519101074740642369848233294239851519212341844337347119899874391456329785623
q = 335062023296420808191071248367701059461
j = 34233586850807404623475048381328686211071196701374230492615844865929237417097514638999377942356150481334217896204702
g = 117483621780776948851322623152941329604983290852776470044816799968190986256316556722568523187517506040883960831402919848784195399671137064998190231834559
y = 10709965516783081490573356698184657992418098658871683731914897364288781862793359484228879297315128529085240057591857301471581217507082588896460650496983734
z = 224029434095732291724690823
a = 0
b = (q-1)/z
def f(y):
return pow(2, (y % k))
print 'a',a
print 'b',b
global k
k = 20
print 'k is set to %d' % k
"""
Tame Kangaroo
xT := 0
yT := g^b
for i in 1..N:
xT := xT + f(yT)
yT := yT * g^f(yT)
"""
xT = 0
yT = pow(g, b, p)
N = ( f(0) + f(b)) / 2 * 2
for i in range(1, N):
xT += f(yT)
yT = (yT * pow(g, f(yT), p)) % p
print xT, yT
"""
Wild Kangaroo
xW := 0
yW := y
while xW < b - a + xT:
xW := xW + f(yW)
yW := yW * g^f(yW)
if yW = yT:
return b + xT - xW
"""
print "Setting wild kangaroo off"
def wildKangaroo(y, yT, xT, b, a, g, p):
xW = 0
yW = y
while xW < (b - a + xT):
xW = xW + f(yW)
yW = yW * pow(g, f(yW), p) % p
if yW == yT:
print 'catch'
return b + xT - xW
A = wildKangaroo(y, yT, xT, b, a, g, p)
print A
print " %s ^ %s = %s" % (g, A, y)
print pow(g, A, p)
To jest przykład implementacji tej metody. Pytania brzmią:
- Na podstawie powyższego przykładu - jak mam rozumieć CZYM SĄ p,q,j,g,y i z?
Na cel wypróbowania metody do uzyskania klucza prywatnego dla adresu Bitcoin - dysponuję adresem, dla którego posiadam klucz publiczny (x i y) w hex oraz wiedzę o tym w jakim zakresie mieści się ten klucz (2^65):
2.. Co zmienić mając wszelkie te dane, aby osiągnąć cel?
3. Czy mogę zastosować formę HEX zamiast tych DEC , czy po prostu muszę je przekształcić w jakiś sposób? Chodzi mi o klucz publiczny który jest hexowy