You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

260 lines
4.8 KiB

{
"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": [
{
"data": {
"text/plain": [
"37095705934669439343138083508754565189542113879843219016388785533085940283555"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d = ((q - 1) * (121665 * pow(121666, -1, q)) % q)\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "1b2aebc5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"46316835694926478169428394003475163141307993866256225615783033603165251855960"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = 4 * pow(5, -1, q) % q\n",
"y"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "aae2f8bf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"15112221349535400772501151409588531511454012693041857206046113283949847762202"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = 0x216936D3CD6E53FEC0A4E231FDD6DC5C692CC7609525A7B2C9562D608F25D51A\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ea9a4d90",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"26187595835145689230469591415084376402084551887632582719101735842039498021991"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_squared = x^2 % q\n",
"x_squared"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "3499c817",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"37053468555941182535542715202780130513046395093004980492626426882532201484768"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_squared = y^2 % q\n",
"y_squared"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "d9617d2d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10865872720795493305073123787695754110961843205372397773524691040492703462777"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"((q - 1) * x_squared + y_squared) % q"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "ece46a74",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10865872720795493305073123787695754110961843205372397773524691040492703462777"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"((d * x_squared * y_squared) % q + 1) % q"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "b430f926",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"21711016731996786641919559689128982722488122124807605757398297001483711807481"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pow(8, -1, q)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "d8575e54",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"486662"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A = 2 * (-1 + d) / (-1 - d)\n",
"A"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2ee580a3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"57896044618658097711785492504343953926634992332820282019728792003956564333285"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B = 4 / (-1 - d)\n",
"B"
]
},
{
"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
}