Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Why code generates error ? Help wanted ASAP.

work fine as writes in article:


M = 93556643250795678718734474880013829509320385402690660619699653921022012489089

A = 66001598144012865876674115570268990806314506711104521036747533612798434904785

B = 25255205054024371783896605039267101837972419055969636393425590261926131199030

P = (56027910981442853390816693056740903416379421186644480759538594137486160388926, 65533262933617146434438829354623658858649726233622196512439589744498050226926)

Q = (61124499720410964164289905006830679547191538609778446060514645905829507254103, 2595146854028317060979753545310334521407008629091560515441729386088057610440)

F = FiniteField(M)

E = EllipticCurve(F,[A,B])

P = E.point(P)

Q = E.point(Q)

factors, exponents = zip(*factor(E.order()))

primes = [factors[i] ^ exponents[i] for i in range(len(factors))][:-2]

dlogs = []

for fac in primes:

t = int(P.order()) / int(fac)

dlog = discrete_log(t*Q,t*P,operation="+")

dlogs += [dlog]

print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order

results:

factor: 4, dlog: 2

factor: 3, dlog: 1

factor: 5, dlog: 4

factor: 7, dlog: 1

factor: 137, dlog: 129

factor: 593, dlog: 224

factor: 24337, dlog: 5729

factor: 25589, dlog: 13993

factor: 3637793, dlog: 1730599

factor: 5733569, dlog: 4590572

But I get a error:

----> 3 dlog = discrete_log(tQ,tP,operation="+")

  4     dlogs += [dlog]


  5     print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order

TypeError: unsupported operand type(s) for *: 'float' and 'EllipticCurvePoint_finite_field' Help me PLEEEEEASE edit code for get results like in source ?

Why code generates error ? Help wanted ASAP.

work fine as writes in article:


M = 93556643250795678718734474880013829509320385402690660619699653921022012489089

93556643250795678718734474880013829509320385402690660619699653921022012489089 A = 66001598144012865876674115570268990806314506711104521036747533612798434904785

66001598144012865876674115570268990806314506711104521036747533612798434904785 B = 25255205054024371783896605039267101837972419055969636393425590261926131199030

25255205054024371783896605039267101837972419055969636393425590261926131199030 P = (56027910981442853390816693056740903416379421186644480759538594137486160388926, 65533262933617146434438829354623658858649726233622196512439589744498050226926)

65533262933617146434438829354623658858649726233622196512439589744498050226926) Q = (61124499720410964164289905006830679547191538609778446060514645905829507254103, 2595146854028317060979753545310334521407008629091560515441729386088057610440)

2595146854028317060979753545310334521407008629091560515441729386088057610440) F = FiniteField(M)

FiniteField(M) E = EllipticCurve(F,[A,B])

EllipticCurve(F,[A,B]) P = E.point(P)

E.point(P) Q = E.point(Q)

E.point(Q) factors, exponents = zip(*factor(E.order()))

zip(*factor(E.order())) primes = [factors[i] ^ exponents[i] for i in range(len(factors))][:-2]

range(len(factors))][:-2] dlogs = []

[] for fac in primes:

primes:
    t = int(P.order()) / int(fac)
  dlog = discrete_log(t*Q,t*P,operation="+")
  dlogs += [dlog]
  print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order

results:

factor: 4, dlog: 2

2 factor: 3, dlog: 1

1 factor: 5, dlog: 4

4 factor: 7, dlog: 1

1 factor: 137, dlog: 129

129 factor: 593, dlog: 224

224 factor: 24337, dlog: 5729

5729 factor: 25589, dlog: 13993

13993 factor: 3637793, dlog: 1730599

1730599 factor: 5733569, dlog: 4590572

4590572 But I get a error:

error: ----> 3 dlog = discrete_log(tQ,tP,operation="+")

discrete_log(t*Q,t*P,operation="+")


      4     dlogs += [dlog]


   5     print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order

TypeError: unsupported operand type(s) for *: 'float' and 'EllipticCurvePoint_finite_field'

Help me PLEEEEEASE edit code for get results like in source ??**