Skip to main content

Учебный проект для сложения точек эллиптической кривой

Project description

Elliptic Curve

Учебный проект реализующий сложение точек на эллептической кривой и произведение точки на скаляр.

Все операции проводятся на двумя типами полей:

  • Конечное поле с характеристикой 2
  • Кольцо вычетов по модулю

Установка

Из исходников:

cd project_path
pip3 install -e '.'

С помощью wheel:

cd wheel_dir_path
pip3 install elliptic_curve-0.0.1-py3-none-any.whl

NOTE: Версия может отличаться от примера в README

Как пользоваться:

После установки в консоле станет доступна команда elliptic-curve

Для получения справки:

elliptic-curve --help

Для запуска скрипта:

elliptic-curve --src <input_dir> --dst <output_dir>

Также можно определить систему счисления для всех выходных файлов с помощью опции --base:

elliptic-curve --src <input_dir> --dst <output_dir> --base 2

Доступны следующие системы счисления: 2, 8, 10. 16

Формат входного файла

NOTE: формат описывает значения по-строчно

Кольцо вычетов по модулю

Z_p
p  # порядок поля
a  # параметр эллиптической кривой
b  # параметр эллиптической кривой
a (x1, y1) (x2, y2)  # сложение двух точек
m <scalar> (x1, y1)  # умножение точки на число

Конечно поле

GF(2^m)
p | m: <степень>  # порядок - неприводимый многочлен или степень неприводимого многочлена
a1  # параметр эллиптической кривой
a2  # параметр эллиптической кривой
a3  # параметр эллиптической кривой
a4  # параметр эллиптической кривой
a5  # параметр эллиптической кривой
a (x1, y1) (x2, y2)  # сложение двух точек
m <scalar> (x1, y1)  # умножение точки на число

Для конечно поля порядок - неприводимый многочлен, также можно его не указывать, а задать лишь степень, тогда скрипт сам возьмет нужный неприводимый многочлен

Форматы чисел

Все числа могут быть заданы с разной системой счисления. Для указания системы счисления необходимо указать ее с помощью префикса:

  • 0x - 16-ная
  • 0b - 2-ная
  • 0o - 8-ная
  • без префикса - 10-ная

Примеры

Смотреть в папке examples

Формат выходного файла

Выходной файл будет содержать результаты на строки-задания (например, a (1, 2) (2, 1)) из входного файла

Для сложения выходная строка будет: (x1, y1) + (x2, y2) = (x3, y3) Для умножения выходная строка будет: <scalar> * (x2, y2) = (x3, y3)

NOTE: система счисления выходного файла может быть определена с помошью опции --base. Если опция не будет указана, то система счисления подберется на основе входного файла по принципу наиболее часто встречаемой системы счисления входа

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elliptic-curve-0.1.2.tar.gz (13.3 kB view hashes)

Uploaded Source

Built Distribution

elliptic_curve-0.1.2-py3-none-any.whl (17.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page