Ask Your Question
0

Koblitz curve

asked 2017-02-15 10:30:19 -0500

santoshi gravatar image

how to write sage code to find point on koblitz curve. how to write equation on koblitz curve.

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
0

answered 2017-02-28 05:57:38 -0500

dan_fulea gravatar image

Some examples may be enough to answer the two dot-ending questions.

There are two elliptic {\scshape Koblitz} curves over $\mathbb F_2$, the equations are $y^2 + xy = x^3 +ax^2+1$, $a$ is either zero or one. In sage, one can simply declare them and investigate points defined over bigger fields as follows:

F = GF(2)    # general field with two elements, 0, 1
a = 0        # or we set a = 1 here, the following lines can be copied...
E = EllipticCurve( F, [ 1, a, 0, 0, 1 ] )

K.<u> = GF( 2^3 )
EK = EllipticCurve( K, [ 1, a, 0, 0, 1 ] )    
# instead we may use EK = E.base_extend( K )

print "K  :: %s" % K 
print "EK :: %s" % EK
print "EK( K ) has %s elements" % EK.order()
print "The K-rational points of E are:"
for P in EK.points():
    print P

This gives:

K  :: Finite Field in u of size 2^3
EK :: Elliptic Curve defined by y^2 + x*y = x^3 + 1 over Finite Field in u of size 2^3
EK( K ) has 4 elements
The K-rational points of E are:
(0 : 1 : 0)
(0 : 1 : 1)
(1 : 0 : 1)
(1 : 1 : 1)

We may also work with bigger fields, for instance:

L.<v> = GF(2^37)
EL = E.base_extend( L )
print "ORDER %s for %s" % ( EL.order().factor(), EL )
P = EL.gens()[0]    # pythonically first and only generator
# print "Generator:\n%s" % P

And we get:

ORDER 2^2 * 149 * 230603167 for Elliptic Curve defined by y^2 + x*y = x^3 + 1 over Finite Field in v of size 2^37

(The point P may also be printed by decommenting.)

The very first lines for the next genus would be in an example, dialog with the interpreter:

sage: K.<a> = GF(2^3)
sage: K
Finite Field in a of size 2^3
sage: R.<x> = PolynomialRing( K )
sage: C = HyperellipticCurve( x^5+1, x )
sage: C
Hyperelliptic Curve over Finite Field in a of size 2^3 defined by y^2 + x*y = x^5 + 1
sage: C.points()
[(0 : 1 : 0),
 (0 : 1 : 1),
 (a : a^2 + 1 : 1),
 (a : a^2 + a + 1 : 1),
 (a^2 : a^2 + a + 1 : 1),
 (a^2 : a + 1 : 1),
 (a + 1 : a^2 + 1 : 1),
 (a + 1 : a^2 + a : 1),
 (a^2 + a : a + 1 : 1),
 (a^2 + a : a^2 + 1 : 1),
 (a^2 + a + 1 : a + 1 : 1),
 (a^2 + a + 1 : a^2 : 1),
 (a^2 + 1 : a^2 + a + 1 : 1),
 (a^2 + 1 : a : 1),
 (1 : 1 : 1),
 (1 : 0 : 1)]
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2017-02-15 10:30:19 -0500

Seen: 247 times

Last updated: Feb 28