https://codeforces.com/contestInvitation/0130ff83d95671be5f529a9bc8b23dda0abd1445
В данной задаче необходимо зашифровывать сообщения с помощью схемы Эль-Гамаля над циклической подгруппой ℤ∗𝑝
Входные данные
В первой строке входного файла содержится три числа:
1≤𝑝≤232−1
— модуль группы;
𝑔∈ℤ∗𝑝
— генератор циклической подгруппы;
𝑘∈⟨𝑔⟩
— публичный ключ.
Во второй строке записано шифруемое сообщение, состоящее из строчных и прописных букв латиницы, пробелов, арабских цифр и точек. На самом деле это число, записанное в 64-ричной системе счисления в little-endian. Процедуру получения численного значения из символа можно посмотреть здесь: https://pastebin.com/pE8iecyg. Для получения шифруемой последовательности нужно записать это число в p-ичной системе счисления в little-endian. Выходные данные
Каждую пару чисел, полученную после шифрования, нужно вывести на своей строчке, сначала степень генератора, затем кусочек сообщения с солью.
В данной задаче необходимо расшифровывать сообщения с помощью схемы Эль-Гамаля над циклической подгруппой ℤ∗𝑝
. Входные данные
В первой строке входного файла содержится два числа:
1≤𝑝≤232−1
— модуль группы;
1≤𝑘<𝑝−12
— приватный ключ.
В последующих строках записаны пары чисел, шифрующие сообщение (каждая пара на своей строчке, сначала степень генератора, потом кусочек сообщения с солью). Выходные данные
После расшифровки вы получите запись числа в p-ичной системе счисления в little-endian. Нужно вывести его запись в 64-чной системе в little-endian, где цифрами являются строчные и прописные буквы латиницы, арабские цифры, точка и пробел. Процедуру получения численного значения из символа можно посмотреть здесь: https://pastebin.com/pE8iecyg, обратите её.
В данной задаче необходимо зашифровывать сообщения с помощью схемы Эль-Гамаля над циклической подгруппой 𝔽∗𝑞
. Входные данные
В первой строке входного файла содержится 1≤𝑝≤232−1 — модуль поля ℤ𝑝
.
Во второй строке через пробел перечислены коэффициенты 𝑓0,𝑓1,…,𝑓𝑛 неприводимого многочлена 𝑓=𝑓0+𝑓1𝑥+⋯+𝑓𝑛𝑥𝑛 над ℤ𝑝, где −𝑝<𝑓𝑖<𝑝
.
В третьей строке перечислены коэффициенты многочлена 𝑔 — генератора циклической подгруппы 𝔽𝑝[𝑥]/𝑓, где −𝑝<𝑔𝑖<𝑝
.
В четвёртой строке перечислены коэффициенты многочлена 𝑘 — публичного ключа шифрования, где −𝑝<𝑘𝑖<𝑝
.
В пятой строке записано шифруемое сообщение, состоящее из строчных и прописных букв латиницы, пробелов, арабских цифр и точек. На самом деле это число, записанное в 64-ричной системе счисления в little-endian. Процедуру получения численного значения из символа можно посмотреть здесь: https://pastebin.com/pE8iecyg. Для получения шифруемой последовательности нужно записать это число в p-ичной системе счисления в little-endian и разбить эту запись на блоки длины 𝑛 . Каждый блок содержит в себе коэффициенты 𝑎0,…,𝑎𝑛−1 элемента группы 𝔽∗𝑝𝑛
. Выходные данные
Коэффициенты многочленов, полученные в результате шифрования, каждый на своей строчке, в каждой паре нужно вывести сначала степень генератора, а затем кусочек сообщения с солью. Для нулевого многочлена допускается вывести пустую строчку.
В данной задаче необходимо расшифровывать сообщения с помощью схемы Эль-Гамаля над циклической подгруппой 𝔽∗𝑞
. Входные данные
В первой строке входного файла содержится 1≤𝑝≤232−1 — модуль поля ℤ𝑝
.
Во второй строке через пробел перечислены коэффициенты 𝑓0,𝑓1,…,𝑓𝑛 неприводимого многочлена 𝑓=𝑓0+𝑓1𝑥+⋯+𝑓𝑛𝑥𝑛 над ℤ𝑝, где −𝑝<𝑓𝑖<𝑝
.
В третьей строке записан 𝑘
— приватный ключ.
В последующих строках записаны многочлены, шифрующие сообщение, каждый на своей строке, сначала степень генератора, затем кусок сообщения с солью. Выходные данные
После конкатенации расшифрованных массивов коэффициентов вы получите запись числа в p-ичной системе счисления в little-endian. Нужно вывести его запись в 64-чной системе в little-endian, где цифрами являются строчные и прописные буквы латиницы, арабские цифры, точка и пробел. Процедуру получения численного значения из символа можно посмотреть здесь: https://pastebin.com/pE8iecyg, обратите её.
В данной задаче необходимо зашифровывать сообщения с помощью схемы Эль-Гамаля над кривой NIST P-256.
Параметры кривой:
Поле ℤ𝑝 , где 𝑝=2256−2224+2192+296−1
.
Уравнение кривой 𝑦2=𝑥3−3𝑥+41058363725152142129326129780047268409114441015993725554835256314039467401291
.
Генератор: точка (𝑥,𝑦)
, где
𝑥=48439561293906451759052585252797914202762949526041747995844080717082404635286
𝑦=36134250956749795798585127919587881956611106672985015071877198253568414405109
Порядок группы:
115792089210356248762697446949407573529996955224135760342422259061068512044369
. Входные данные
В первой строке записаны координаты публичного ключа через пробел.
Во второй строке записано число 𝑛<100
.
В последующих 𝑛 строках записаны 𝑥-координаты точек, которые требуется зашифровать, в 64-ричной системе счисления в little-endian (алфавит такой же, как в предыдущих задачах, только вместо пробела — нижнее подчёркивание, _). Гарантируется, что существует такой 𝑦, что (𝑥,𝑦) лежит на кривой; вам подойдёт любой такой 𝑦
. Выходные данные
Последовательность пар точек, задающих зашифрованное сообщение, каждая точка на своей строчке, сначала степень генератора, затем кусочек сообщения с солью.
Если точка —
, выведите Z.
Иначе выведите её координаты через пробел.
Если какие-то из выведенных точек не лежат на кривой, будет выдан вердикт PE.
В данной задаче необходимо расшифровывать сообщения с помощью схемы Эль-Гамаля над кривой NIST P-256.
Параметры кривой:
Поле ℤ𝑝 , где 𝑝=2256−2224+2192+296−1
.
Уравнение кривой 𝑦2=𝑥3−3𝑥+41058363725152142129326129780047268409114441015993725554835256314039467401291
. Входные данные
В первой строке записан 1≤𝑘<ord(𝑔)
— приватный ключ.
Во второй строке записано число 𝑛<1000
.
В последующих 2𝑛
строках записаны пары точек, шифрующих сообщение, каждая точка на своей строчке, сначала степень генератора, затем кусочек сообщения с солью.
Если точка —
, будет написано Z.
Иначе будут записаны координаты точки. Выходные данные
Нужно вывести 𝑥
-координаты зашифрованных точек в little-endian в 64-ричной системе счисления (алфавит такой же, как в предыдущей задаче), каждую на своей строчке.