Учебный проект для сложения точек эллиптической кривой
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file elliptic-curve-0.1.2.tar.gz
.
File metadata
- Download URL: elliptic-curve-0.1.2.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b8d62760631c8e4be7c65dd3c40c4ab60e47efa99ad0cb4e74af28a268f7015 |
|
MD5 | 234963f6c0de4f5a7b662170068de2d9 |
|
BLAKE2b-256 | 86271049545db0ced33686fcd11769264662153e091cb119f44e5686b56ec0aa |
File details
Details for the file elliptic_curve-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: elliptic_curve-0.1.2-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38bf3c43e6b616755bba521c428402e7d92dc7d297f0fe46837031bce917ee60 |
|
MD5 | 088bb212fec2d2cffefc7e106f7f5a2d |
|
BLAKE2b-256 | cfb80520a603c2d09d2c68065e89d37236993f76192845aa03e4d55ab5e49ad0 |