2018-01-13 12:03:30 +0100 asked a question implement given divisor as a specific hyperelliptic curve divisor

I get the values of a divisor for a hyperelliptic curve from a research paper to ensure the divisor is correct and i want to use this divisor on calculation.

so Idid the following:

p = 4112543547855339322343814790708185367671872426434747235319998473455582535888229747778325047393413053
K = GF(p)
R.<x> = K[]

f = x^5 + 7943193*x^4 + 6521255*x^3 + 1065528*x^2 + 3279922*x + 3728927
C = HyperellipticCurve( f )
J = C.jacobian()
X = J(K)

u, v = x^2 + 22457213658579645161*x + 62960708771725664757, 65279057408798633572*x + 32004384923913711271
D = X( [u,v] )


verbose 0 (3324: multi_polynomial_ideal.py, groebner_basis) Warning: falling back to very slow toy implementation. verbose 0 (1083: multi_polynomial_ideal.py, dimension) Warning: falling back to very slow toy implementation. Error in lines 9-9 Traceback (most recent call last):
File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1013, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> File "/ext/sage/sage-8.1/local/lib/python2.7/site-packages/sage/schemes/hyperelliptic_curves/jacobian_homset.py", line 145, in __call__ return JacobianMorphism_divisor_class_field(self, tuple(P)) File "/ext/sage/sage-8.1/local/lib/python2.7/site-packages/sage/schemes/hyperelliptic_curves/jacobian_morphism.py", line 388, in __init__ polys, C)) ValueError: Argument polys (= (x^2 + 22457213658579645161x + 62960708771725664757, 65279057408798633572x + 32004384923913711271)) must be divisor on curve Hyperelliptic Curve over Finite Field of size 4112543547855339322343814790708185367671872426434747235319998473455582535888229747778325047393413053 defined by y^2 = x^5 + 7943193x^4 + 6521255x^3 + 1065528x^2 + 3279922x + 3728927.

Does this mean the paper is wrong or I am at wrong. and if so, how can I modify my work?

2018-01-10 00:19:24 +0100 commented answer Set a specific polynomial as a divisor of hyper elliptic curve

I get the values from a research paper to ensure (u, v) are correct

A Secured Cloud System using Hyper Elliptic Curve and in sage: p = 4112543547855339322343814790708185367671872426434747235319998473455582535888229747778325047393413053

K = GF(p) R.<x> = K[]

f = x^5 + 7943193x^4 + 6521255x^3 + 1065528x^2 + 3279922x + 3728927 C = HyperellipticCurve( f ) J = C.jacobian() X = J(K)

u, v = x^2 + 22457213658579645161x + 62960708771725664757, 65279057408798633572x + 32004384923913711271 D = X( [u,v] )

"error"

2018-01-08 00:07:00 +0100 commented answer Set a specific polynomial as a divisor of hyper elliptic curve

In +JP+JQ = (x^2 + 18x, y + 14x + 126) ->

can not use the same method u, v = x^2 + 18x, 14x + 126 but using

u, v = x^2 + 18x, K(14/126)x + 1

Why?

So this mean:

11 * (x^2 + 18x, 110x + 126) not equal 11 * (x2+18x, 17x+1)

so which is reduced divisor, which i use in calculations

2018-01-06 21:49:39 +0100 asked a question Set a specific polynomial as a divisor of hyper elliptic curve

If I have a hyperelliptic curve of genus 2 = y2+( x2+x)y = x5+ x3 +1

and reduced divisor for the curve in Mumford is (x2+18x, 17x+1).

the two was given, I can construct the curve: as k. = GF(next_prime(2^160)); R.<x> = k[]

C = HyperellipticCurve(x^5 + x^3 + 1, x^2+x)

How to set (x2+18x, 17x+1) as it's divisor

2017-12-14 12:10:50 +0100 asked a question order of hyperelliptic curve divisor

I create a hyperelliptic curve, over finite field

zz = random_prime(2^81-1,False,2^80);
Q = GF(zz); x = Q['x'].gen();
f = x^5+ 2*x^2 +x + 3;
C = HyperellipticCurve(f, 0)


Then, Jacobian of Hyperelliptic Curve

J = C.jacobian()(Q)


then found two points and get there divisor and substract

P1 = (514014285438369163567791 : 461217828857546813804480 : 1)

P2 = (514014285438369163567791 : 461217828857546813804480 : 1)

D1 = J(P1);
D2 = J(P2);
D = D1 - D2;


but when calculating the order of D (error)

D.order()


otImplementedError
Traceback (most recent call last) <ipython-input-69-4132ea6bd39c> in <module>() ----> 1 D.order()

/home/sage/sage-8.0/src/sage/structure/element.pyx in sage.structure.element.AdditiveGroupElement.order (/home/sage/sage/src/build/cythonized/sage/structure/element.c:16098)() 2276 Return additive order of element 2277 """ -> 2278 return self.additive_order() 2279 2280 def __invert__(self):

/home/sage/sage-8.0/src/sage/structure/element.pyx in sage.structure.element.ModuleElement.additive_order (/home/sage/sage/src/build/cythonized/sage/structure/element.c:15332)() 2196 Return the additive order of self. 2197 """ -> 2198 raise NotImplementedError 2199 2200

###### #

NotImplementedError:

How to calculate it's order(I need the order to use it as mod in further calculation)

2017-05-05 02:29:35 +0100 asked a question I want to compare time of scalar multiplicity between ECC HECC with security level 80
So in ECC GF(next_prime(2^160)) then construct the curve, base point
=====================================================================
I'm not sure how in hyper elliptic curve;
I think
$q = next_prime(2^80)$ K.<x>=GF(q,'x')[]
$f = x^5 + x^3 + 1$ H = HyperellipticCurve(f, 0)
$J = H.jacobian()$ z = Integer(randrange(2, q-2))
\$ D = J(H.lift_x(F(z)))               # divisor
===============================================================
To compare time
ECC => %timeit (Integer(randrange(1, 2^160))) * base point
HECC => %timeit (Integer(randrange(1, 2^80))) * divisor
==============================================================
is this correct?
and if this correct, how ECC time = 13.2 millisecond;
HECC time = 185 millisecond
`