Возможно ли как-то вставить код на Python ? Нужно производить арифметику с большими числами, а HiAsm этого не умеет делать к большому сожалению. Например нужно сложить 2 больших числа. На Python это выглядит так:
A = 55066263022277343669578718895168534326250603453777594175500187360389116729240
B = 32670510020758816978083085130507043184471273380659243275938904335757337482424
summa = (A + B)
Может можно вместо Python использовать Delphi ? Еще нужно производить операции по модулю и модульную инверсию. В Python это легко всё делается. Пакет Python у меня не работает. Я так понял нужно поставить компилятор? Где его взять?
Редактировалось 4 раз(а), последний 2025-09-12 14:47:20
Этот топик читают: Гость
Ответов: 168
Рейтинг: 1
|
|||
карма: 1 |
|
Ответов: 975
Рейтинг: 204
|
|||
Andrej77rv, Попробуй так
Редактировалось 2 раз(а), последний 2025-09-12 15:57:13 |
|||
карма: 20 |
|
Ответов: 168
Рейтинг: 1
|
|||
карма: 1 |
|
Ответов: 975
Рейтинг: 204
|
|||
Andrej77rv писал(а): Не работаетУ меня работает https://i.mcgl.ru/4sw6A5qoeg Возможно, ты неправильно копируешь схему У тебя там дво1ные кавычки а должны быть две одинарные. --- Добавлено в 2025-09-12 18:08:57 для того, чтобы скопировать схему-код, находящуюся в тегах “code” в буфер обмена, нужно подвести курсор в левый верхний угол области с кодом пока курсор не изменится на указательный палец и щёлкнуть левой кнопкой мыши. Весь код выделится и скопируется в буфер обмена автоматически. Останется только вставить его в поле HiAsm. Редактировалось 3 раз(а), последний 2025-09-12 18:20:43 |
|||
карма: 20 |
|
Ответов: 168
Рейтинг: 1
|
|||
Gunta писал(а): У меня работаетДа спасибо получилось. А как выполнить вот этот код? X=78173298682877769088723994436027545680738210601369041078747105985693655485630 Y=92362876758821804597230797234617159328445543067760556585160674174871431781431 def find_inverse(number, modulus): return pow(number, -1, modulus) Gx=55066263022277343669578718895168534326250603453777594175500187360389116729240 Gy=32670510020758816978083085130507043184471273380659243275938904335757337482424 p = 115792089237316195423570985008687907853269984665640564039457584007908834671663 Tochka3 = (Gy - Y) * find_inverse (Gx - X, p) % p X3 = (Tochka3 ** 2 - X - Gx) % p Y3 = (Tochka3 * (X - X3) - Y) % p print(X3,Y3) А потом что получилось (X3,Y3) ответом заменить X и Y и снова посчитать при нажатии кнопки. И так далее.. Это сложение точек на эллиптической кривой в конечном поле с модулем p. Редактировалось 4 раз(а), последний 2025-09-12 21:31:30 |
|||
карма: 1 |
|
Ответов: 975
Рейтинг: 204
|
|||
Andrej77rv,
|
|||
карма: 20 |
|
Ответов: 168
Рейтинг: 1
|
|||
Gunta писал(а): Andrej77rv,Спасибо вам огромное! Я бы поставил плюс, но у меня прав недостаточно ![]() Редактировалось 2 раз(а), последний 2025-09-15 08:41:24 |
|||
карма: 1 |
|
Ответов: 4667
Рейтинг: 767
|
|||
Можно найти код для Delphi: https://wiki.freepascal.org/BigInteger
Вероятно, наиболее просто будет портировать GInt оттуда. |
|||
карма: 26 |
|
Ответов: 168
Рейтинг: 1
|
|||
Gunta писал(а): Andrej77rv,Начал разбираться и не понятно как здесь поменять "Private key" ? Редактировалось 1 раз(а), последний 2025-09-17 08:09:57 |
|||
карма: 1 |
|
Главный модератор
Ответов: 3000
Рейтинг: 396
|
|||
|
|||
карма: 6 |
|
Ответов: 168
Рейтинг: 1
|
|||
Подскажите как зациклить этот код например 10 раз? Ответ нужно подставлять вместо переменных X и Y. Ответ в каждом цикле нужно сохранить в файл. Искал в гугле так и не понял.
X = 0xab62748bd5da065167ae2e2d4c23c241c56b6760e585bd9004a2e0e56bc0aa83 Y = 0xf4e098086a9558d9a0f8e99fa8b741076546a01d6d660cbcffc4ea1a2e97138a Gx = 0x5b42d9575cc0874899f6a6a7e2c485aea0159b00b0ab85693d99b6fb0cd578dd Gy = 0xB62C420A25FCBA029D5A521C12EBA6F603309A8C88F42D16AB9C76969A9A2033 p = 115792089237316195423570985008687907853269984665640564039457584007908834671663 def find_inverse(number, modulus): return pow(number, -1, modulus) Tochka3 = (Gy - Y) * find_inverse (Gx - X, p) % p X3 = (Tochka3 ** 2 - X - Gx) % p Y3 = (Tochka3 * (X - X3) - Y) % p print(X3,Y3) --- Добавлено в 2025-10-03 16:44:46 Это сложение точек X,Y и Gx,Gy Редактировалось 1 раз(а), последний 2025-10-03 16:44:46 |
|||
карма: 1 |
|
Ответов: 975
Рейтинг: 204
|
|||
Andrej77rv писал(а): Подскажите как зациклить этот код например 10 раз? Ответ нужно подставлять вместо переменных X и Y. Ответ в каждом цикле нужно сохранить в файл. Искал в гугле так и не понял.
|
|||
карма: 20 |
|
Ответов: 168
Рейтинг: 1
|
|||
Gunta писал(а): Да спасибо. Я хотел сделать только на Python пока без HiAsm. Вот что получилось. Теперь думаю как сохранить каждый цикл в файл, т.е. добавлять новое значение в конец файла. import time start_time = time.time() # код, время выполнения которого нужно измерить # точка2 X = 0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5 Y = 0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a # точка1 Gx = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 Gy = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 p = 115792089237316195423570985008687907853269984665640564039457584007908834671663 def find_inverse(number, modulus): return pow(number, -1, modulus) a = 1 while a < 10: Tochka3 = (Gy - Y) * find_inverse (Gx - X, p) % p X3 = (Tochka3 ** 2 - X - Gx) % p Y3 = (Tochka3 * (X - X3) - Y) % p X = X3 Y = Y3 a = a+1 #print(X3,Y3) res1 = hex(X3) res2 = hex(Y3) print(res1,res2) end_time = time.time() execution_time = end_time - start_time print(f"Время выполнения: {execution_time} секунд") --- Добавлено в 2025-10-03 19:48:14 Посмотрел ваш код...наверно будет работать. --- Добавлено в 2025-10-03 19:54:15 Работает только всё в "куче". А можно ли как-то сделать чтобы каждый цикл добавлял данные в новую строку? --- Добавлено в 2025-10-03 20:13:41 И еще как в файле my_file.txt заменить "nX=" на номер цикла? Редактировалось 6 раз(а), последний 2025-10-03 20:19:16 |
|||
карма: 1 |
|
Ответов: 975
Рейтинг: 204
|
|||
Andrej77rv писал(а): Работает только всё в "куче". А можно ли как-то сделать чтобы каждый цикл добавлял данные в новую строку?Что-то ты делаешь не так. У меня всё построчно. |
|||
карма: 20 |
|
Ответов: 168
Рейтинг: 1
|
|||
Буду разбираться. Ещё вопрос как поставить номер цикла к каждой строке?
|
|||
карма: 1 |
|