{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "f890e69f", "metadata": {}, "outputs": [], "source": [ "q = pow(2,255) - 19" ] }, { "cell_type": "code", "execution_count": 2, "id": "d90a7f0b", "metadata": {}, "outputs": [], "source": [ "A = 486662\n", "B = 1" ] }, { "cell_type": "code", "execution_count": 3, "id": "1b2aebc5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "486664\n", "486660\n" ] } ], "source": [ "a = (A + 2) * 1\n", "d = (A - 2) * 1\n", "print(a)\n", "print(d)" ] }, { "cell_type": "code", "execution_count": 4, "id": "aae2f8bf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u = 9\n", "u" ] }, { "cell_type": "code", "execution_count": 5, "id": "ea9a4d90", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14781619447589544791020593568409986887264606134616475288964881837755586237401" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = mod(u^3 + A * u^2 + u, q).sqrt()\n", "v" ] }, { "cell_type": "code", "execution_count": 6, "id": "95895004", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "38213832894368730265794714087330135568483813637251082400757400312561599933396" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u * pow(v, -1, q) % q" ] }, { "cell_type": "code", "execution_count": 7, "id": "1134cf74", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "46316835694926478169428394003475163141307993866256225615783033603165251855960" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(u - 1) * pow(u + 1, -1, q) % q" ] }, { "cell_type": "code", "execution_count": null, "id": "ec089e21", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.2", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }