arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
ark-curves-cherry-picked/curve25519/scripts/g1.ipynb
curve25519/scripts/g1.ipynbRaw
  1{
  2 "cells": [
  3  {
  4   "cell_type": "code",
  5   "execution_count": 1,
  6   "id": "f890e69f",
  7   "metadata": {},
  8   "outputs": [],
  9   "source": [
 10    "q = pow(2,255) - 19"
 11   ]
 12  },
 13  {
 14   "cell_type": "code",
 15   "execution_count": 2,
 16   "id": "d90a7f0b",
 17   "metadata": {},
 18   "outputs": [],
 19   "source": [
 20    "A = 486662\n",
 21    "B = 1"
 22   ]
 23  },
 24  {
 25   "cell_type": "code",
 26   "execution_count": 3,
 27   "id": "1b2aebc5",
 28   "metadata": {},
 29   "outputs": [
 30    {
 31     "name": "stdout",
 32     "output_type": "stream",
 33     "text": [
 34      "486664\n",
 35      "486660\n"
 36     ]
 37    }
 38   ],
 39   "source": [
 40    "a = (A + 2) * 1\n",
 41    "d = (A - 2) * 1\n",
 42    "print(a)\n",
 43    "print(d)"
 44   ]
 45  },
 46  {
 47   "cell_type": "code",
 48   "execution_count": 4,
 49   "id": "aae2f8bf",
 50   "metadata": {},
 51   "outputs": [
 52    {
 53     "data": {
 54      "text/plain": [
 55       "9"
 56      ]
 57     },
 58     "execution_count": 4,
 59     "metadata": {},
 60     "output_type": "execute_result"
 61    }
 62   ],
 63   "source": [
 64    "u = 9\n",
 65    "u"
 66   ]
 67  },
 68  {
 69   "cell_type": "code",
 70   "execution_count": 5,
 71   "id": "ea9a4d90",
 72   "metadata": {},
 73   "outputs": [
 74    {
 75     "data": {
 76      "text/plain": [
 77       "14781619447589544791020593568409986887264606134616475288964881837755586237401"
 78      ]
 79     },
 80     "execution_count": 5,
 81     "metadata": {},
 82     "output_type": "execute_result"
 83    }
 84   ],
 85   "source": [
 86    "v = mod(u^3 + A * u^2 + u, q).sqrt()\n",
 87    "v"
 88   ]
 89  },
 90  {
 91   "cell_type": "code",
 92   "execution_count": 6,
 93   "id": "95895004",
 94   "metadata": {},
 95   "outputs": [
 96    {
 97     "data": {
 98      "text/plain": [
 99       "38213832894368730265794714087330135568483813637251082400757400312561599933396"
100      ]
101     },
102     "execution_count": 6,
103     "metadata": {},
104     "output_type": "execute_result"
105    }
106   ],
107   "source": [
108    "u * pow(v, -1, q) % q"
109   ]
110  },
111  {
112   "cell_type": "code",
113   "execution_count": 7,
114   "id": "1134cf74",
115   "metadata": {},
116   "outputs": [
117    {
118     "data": {
119      "text/plain": [
120       "46316835694926478169428394003475163141307993866256225615783033603165251855960"
121      ]
122     },
123     "execution_count": 7,
124     "metadata": {},
125     "output_type": "execute_result"
126    }
127   ],
128   "source": [
129    "(u - 1) * pow(u + 1, -1, q) % q"
130   ]
131  },
132  {
133   "cell_type": "code",
134   "execution_count": null,
135   "id": "ec089e21",
136   "metadata": {},
137   "outputs": [],
138   "source": []
139  }
140 ],
141 "metadata": {
142  "kernelspec": {
143   "display_name": "SageMath 9.2",
144   "language": "sage",
145   "name": "sagemath"
146  },
147  "language_info": {
148   "codemirror_mode": {
149    "name": "ipython",
150    "version": 3
151   },
152   "file_extension": ".py",
153   "mimetype": "text/x-python",
154   "name": "python",
155   "nbconvert_exporter": "python",
156   "pygments_lexer": "ipython3",
157   "version": "3.9.7"
158  }
159 },
160 "nbformat": 4,
161 "nbformat_minor": 5
162}