Giter VIP home page Giter VIP logo

bgstep's Introduction

BGstep

Baby step, Giant Step. Since Nov 26th.

=====

This followings are the algorithm of Baby step, Giant step.

Let #E(F_q) = N. 1.Compute Q = (q+1)P.

2.Choose an integer m with more than 4-th root of q. Compute and store the Points jP for j=0,1,2,...,m.

3.Compute the points Q + k(2m)P for k=-m,-(m-1),...,m until there is a match Q+k(2m)P = \pm jP with a point (or its negative) on the stored list.

4.Conclude that (q+1+2mk \mp j)P = \infty. Let M = q+1+2mk \mp j.

5.Factor M. Let p_1,....,p_r be the distinct prime factors of M.

6.Compute (M/p_i) for i=1,...,r. If (M/p_i)P = \infty for some i, replace M with M/p_i and go back to step (5). If (M/p_i)P \neq \infty for all i then M is the order of the point P.

7.If we are looking for the #E(P_q), then repeat step (1)-(6) with randomly chosen points in E(F_q) until the greatest common multiple of the orders divides only one integer N between q+1-2\sqrt{q} and q+1+\sqrt{q}. Then N = #E(F_q).

====

Remarks follows.

To save storage space, it might be more efficient to store only the x coordinates of the points jP (along with the corresponding integer j), since looking for a match with \pm jP only require the x-coordinate (assuming we are working with a Weierstrass equation). When a match is found, the two possible y-coordinates can be recomputed.

Computing Q+k(2m)P can be done by computing Q and 2mP once for all. To get from Q+k(2m)P to Q+(k+1)(2mP), simply add 2mP rather than recomputing everything. Similarly, once jP has been computed, add P to get (j+1)P.

We are assuming that we can factor M. If not, we can at least find all the small prime factor p_i and check that (M/p_i)P\neq \infty for these. Then M will be good candidate for the order of P.

Why is the method called "Baby Step, Giant Step"? The baby steps are from a point jP to (j+1)P. The giant steps are from a point k(2m)P to (k+1)(2m)P, since we take the "bigger" step 2mP.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.