script : x from y
## Input
y = 0x3199555CE45C38B856C9F64AC6DB27000AB6CEA10CAD76B2B6E246C9A020E707
## Field parameters
# Field modulus
p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
# Cube root of 1
beta = 0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee
## Actual code
xcubed = (y*y - 7) % p
print ("xcubed = 0x%x" % xcubed)
x = pow(xcubed, (p + 2) / 9, p)
print ("x1 = 0x%x" % x)
print ("x2 = 0x%x" % (x * beta % p))
print ("x3 = 0x%x" % (x * beta * beta % p))
script: y from x
p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
x = 0x33709eb11e0d4439a729f21c2c443dedb727528229713f0065721ba8fa46f00e
ysquared = ((x*x*x+7) % p)
print ("ysquared= %s ", hex(ysquared) )
y = pow(ysquared, (p+1)/4, p)
print ("y1 = ",hex(y))
print ("y2 = ", hex(y * -1 % p))
y1 = y
y2 = (y * -1) % p
print(" ")
print("value x = ",hex(x))
print("value x = ",x)
print(" ")
if Integer(y1) % 2 == 0:
print("value 02 to y = ",hex(y1))
print("value 02 to y =",y1)
print(" ")
print("value 03 to y = ",hex(y2))
print("value 03 to y =",y2)
if Integer(y2) % 2 == 0:
print("value 02 to y = ",hex(y2))
print("value 02 to y =",y2)
print(" ")
print("value 03 to y = ",hex(y1))
print("value 03 to y =",y1)
#test
print (hex((x**3 + 7 - y1**2) % p) )
print (hex((x**3 + 7 - y2**2) % p))