diff options
Diffstat (limited to 'analysis/countermeasures/curvegen.ipynb')
| -rw-r--r-- | analysis/countermeasures/curvegen.ipynb | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/analysis/countermeasures/curvegen.ipynb b/analysis/countermeasures/curvegen.ipynb deleted file mode 100644 index 949fe8e..0000000 --- a/analysis/countermeasures/curvegen.ipynb +++ /dev/null @@ -1,202 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a98d0f65-3419-4c00-9921-66b5d3e3ee44", - "metadata": {}, - "source": [ - "# Curve generation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4a81787a-c139-479f-84a5-93d4fd07698a", - "metadata": {}, - "outputs": [], - "source": [ - "import itertools\n", - "import random\n", - "import time\n", - "import json\n", - "\n", - "import cypari2\n", - "\n", - "from subprocess import Popen, PIPE\n", - "\n", - "from tqdm.auto import trange, tqdm\n", - "\n", - "from common import divisor_map" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1d385964-888d-4704-8ff8-40ebf2fac3da", - "metadata": {}, - "outputs": [], - "source": [ - "bits = 256" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "227173fe-308f-4c2f-abf9-9a4480600484", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "pari = cypari2.Pari()\n", - "orders = []\n", - "for divisor in tqdm(divisor_map[\"all\"]):\n", - " dbits = divisor.bit_length()\n", - " pbits = bits - dbits\n", - " if dbits == bits:\n", - " print(divisor, 1)\n", - " orders.append((divisor, 1, divisor))\n", - " continue\n", - " if dbits > bits:\n", - " print(f\"Cannot fill in for divisor with {dbits}.\")\n", - " continue\n", - " while True:\n", - " prime = int(pari.randomprime([2**(pbits-1), 2**(pbits+1)]))\n", - " order = divisor * prime\n", - " if order.bit_length() == bits:\n", - " break\n", - " print(divisor, prime)\n", - " orders.append((divisor, prime, order))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "93fc0fc1-f1d5-48e3-90db-5907f3530813", - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"curves_1.json\", \"r\") as f:\n", - " parsed = json.load(f)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "af70d331-8ac7-4985-ab98-0201c6c399fb", - "metadata": {}, - "outputs": [], - "source": [ - "commands = []\n", - "processes = []\n", - "for divisor, prime, order in orders:\n", - " if str(divisor) in parsed:\n", - " continue\n", - " command = [\"./ecgen\", \"--fp\", \"-n\", f\"{divisor},{prime}\", \"-u\", \"--points\", \"none\", \"-m\", \"12g\", \"--threads\", \"8\", str(bits)]\n", - " commands.append(command)\n", - " print(\" \".join(command))\n", - "\n", - "random.shuffle(commands)\n", - "total = len(commands)\n", - "\n", - "results = {}\n", - "errored = {}\n", - "running = []\n", - "max_procs = 20\n", - "with tqdm(total=total, smoothing=0, desc=\"Computing curves\") as pbar:\n", - " while commands or running:\n", - " done = []\n", - " for cmd, start, proc in running:\n", - " now = time.time()\n", - " divisor = int(cmd[3].split(\",\")[0])\n", - " if (ret := proc.poll()) is not None:\n", - " print(\" \".join(cmd))\n", - " err = proc.stderr.read()\n", - " res = proc.stdout.read()\n", - " if err:\n", - " errored[divisor] = err\n", - " print(err)\n", - " else:\n", - " results[divisor] = res\n", - " pbar.update(1)\n", - " done.append((cmd, start, proc))\n", - " if len(results) % 10 == 0:\n", - " print(f\"Results {len(results)}, remaining {len(commands)}, errored {len(errored)}\")\n", - " elif now - start > 60 * 60:\n", - " print(\"Timed out: \" + \" \".join(cmd))\n", - " errored[divisor] = \"timeout\"\n", - " proc.kill()\n", - " pbar.update(1)\n", - " done.append((cmd, start, proc))\n", - " for d in done:\n", - " running.remove(d)\n", - " time.sleep(1)\n", - " while len(running) < max_procs and commands:\n", - " command = commands.pop()\n", - " start = time.time()\n", - " proc = Popen(command, stdout=PIPE, stderr=PIPE, text=True)\n", - " running.append((command, start, proc))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ddd92921-ccdd-4978-b36f-65872973d138", - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"curves_1.json\", \"r\") as f:\n", - " parsed = json.load(f)\n", - "if results:\n", - " for div, res in results.items():\n", - " try:\n", - " data = json.loads(res)\n", - " parsed[str(div)] = data[0]\n", - " print(\"ok\", div)\n", - " except:\n", - " print(\"failed\", div)\n", - "with open(\"curves_1.json\", \"w\") as f:\n", - " json.dump(parsed, f)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c26f55ff-4cf4-43d0-b1ed-5f3c0c6708df", - "metadata": {}, - "outputs": [], - "source": [ - "len(parsed)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5bf5e3e7-7472-458b-bdc8-e5b7a8d65ec1", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} |
