Ask Your Question
0

I need to represent the Elliptic curve point in projective coordinate with Z coordinate has value not normalized 1

asked 2020-04-28 20:17:53 +0100

Hassan Mostafa gravatar image

the points over elliptic curve defined over finite field always displayed in projective coordinates (X:Y:Z) with normalised Z component ( always Z = 1). i need points to be in normal projective coordinates ( Z component not always 1 )

edit retag flag offensive close merge delete

Comments

Example code that can be copy-pasted in a fresh Sage session to illustrate the problem helps others get started on answering a question, and therefore increases the chances and the expected speed of an answer. Please give us something to play with!

slelievre gravatar imageslelievre ( 2020-04-29 18:31:39 +0100 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2020-06-15 17:14:14 +0100

dan_fulea gravatar image

It is hard to extract (exactly the intentioned) question, but i will try to cover all nuances.

First of all, not all points are shown with a $Z$-normalized component, as the following example is showing it.

sage: E = EllipticCurve( GF(7), [3, 4] )                                                                                      
sage: for P in E: 
....:     print(P) 
....:                                                                                                                         
(0 : 1 : 0)
(0 : 2 : 1)
(0 : 5 : 1)
(1 : 1 : 1)
(1 : 6 : 1)
(2 : 2 : 1)
(2 : 5 : 1)
(5 : 2 : 1)
(5 : 5 : 1)
(6 : 0 : 1)

And indeed, all but one points have a $Z$-component normalized to one, but the neutral point $O$ is shown as $(0:1:0)$. For all points we can initialize them using the $(x,y)$ notation (if the $Z$-component does not vanish), for instance:

sage: E.point( [2, 5] )                                                                                                       
(2 : 5 : 1)

but also using "projective components" (in a list), for instance for the above point:

sage: E.point( [2, 5] )                                                                                                       
(2 : 5 : 1)
sage: E.point( [2, 5, 1] )                                                                                                    
(2 : 5 : 1)
sage: E.point( [4, 10, 2] )                                                                                                   
(2 : 5 : 1)
sage: E.point( [6, 15, 3] )                                                                                                   
(2 : 5 : 1)
sage: E.point( [-1, 1, 3] )                                                                                                   
(2 : 5 : 1)

et caetera. The "infinity point" is

sage: E.point(0)                                                                                                              
(0 : 1 : 0)
sage: E.point( [0, 1, 0] )                                                                                                    
(0 : 1 : 0)
sage: E.point( [0, 2, 0] )                                                                                                    
(0 : 1 : 0)

so we can introduce it in either of the above ways.

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: 2020-04-28 20:17:53 +0100

Seen: 486 times

Last updated: Jun 15 '20